अब मदद कर सकते हैं NSURLSession
उपयोग करने के लिए है उदाहरण (जीईटी):
-(void)placeGetRequest:(NSString *)action withHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))ourBlock {
NSString *urlString = [NSString stringWithFormat:@"%@/%@", URL_API, action];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:ourBlock] resume];
}
अब आप कॉल करना होगा एक विधि के साथ वह विधि (या यदि आप चाहें तो आपका पूरा यूआरएल) और एपीआई कॉल रिटर्न के दौरान ब्लॉक किया जाएगा।
[self placeGetRequest:@"action" withHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// your code
}];
कि ब्लॉक के अंदर, आप प्रतिक्रिया डेटा के साथ एक NSData
और NSURLResponse
HTTP प्रतिसाद के साथ प्राप्त होगा। तो अब, आप अपने कोड डाल कर सकते हैं:
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
documentsURL = [documentsURL URLByAppendingPathComponent:@"localFile.pdf"];
[data writeToURL:documentsURL atomically:YES];
NSURLSession और NSURLConnection के बीच
NSURLConnection मुख्य अंतर: अगर हम NSURLConnection और सिस्टम के साथ एक खुले कनेक्शन है हमारे अनुप्रयोग, जब बीच में हमारी ऐप पृष्ठभूमि मोड में जाती है, जो कुछ भी हमें प्राप्त या भेजा गया है, वह खो गया था।
NSURL सत्र: इस समस्या को हल करें और हमें प्रक्रिया डाउनलोड से बाहर भी दें। यह कनेक्शन प्रक्रिया का प्रबंधन करता है, भले ही हमारे पास पहुंच न हो। आप अपने AppDelegate
में application:handleEventsForBackgroundURLSession:completionHandler
का उपयोग करने की आवश्यकता होगी तो NSURLSession के उपयोग के साथ, आप का प्रबंधन करने के लिए या आपके इंटरनेट कनेक्शन की जांच करने के ओएस आप के लिए यह करता है क्योंकि जरूरत नहीं है।
"बहिष्कृत" कोई त्रुटि नहीं है। यह एक चेतावनी है कि भविष्य में कुछ दूर जा रहा है। यदि आपके पास वास्तविक त्रुटि है, तो शायद यह एक अलग कारण के लिए है। –
सूखी आप – Maximilian