इसे करने के कई तरीके हैं। सबसे पहले, यह ध्यान रखना महत्वपूर्ण है कि dataWithContentsOfURL
एक अतुल्यकालिक अनुरोध नहीं है। मतलब कि अगर आप इसका इस्तेमाल बड़े डेटा को ट्रांसफर करने के लिए करते हैं, तो इस बात की अच्छी संभावना है कि आप ऐप को फ्रीज कर देंगे। एसिंक्स अनुरोधों के लिए, आपको NSURLRequest का उपयोग करना चाहिए।
ऐसा कहकर, डेटा को असीमित रूप से अपलोड/डाउनलोड करने के लिए उत्कृष्ट एपीआई हैं। एक जो बहुत बार उपयोग किया जाता है, और अच्छी तरह से प्रलेखित है AFNetworking . यह NSURLRequest के शीर्ष पर कोडित है।
उदाहरण के लिए, अपने PHP में आप इस तरह के POST स्टेटमेंट से फ़ील्ड्स को पुनः प्राप्त कर सकते हैं:
<?php
$username = $_POST["username"];
$email = $_POST["email"];
?>
अपने ऐप में, आप AFNetworking में POST अनुरोध के साथ PHP स्क्रिप्ट को निम्नानुसार कॉल कर सकते हैं:
NSString *username = @"username";
NSString *email = @"email";
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"yourUrl" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSLog(@"Sending POST request to server");
[formData appendPartWithFormData:[username dataUsingEncoding:NSUTF8StringEncoding] name:@"username"];
[formData appendPartWithFormData:[email dataUsingEncoding:NSUTF8StringEncoding] name:@"email"];
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"SERVER UPLOAD FRACTION COMPLETED: %f", uploadProgress.fractionCompleted);
});
} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSLog(@"responseObject %@", responseObject);
NSString *responseString = [[[NSString alloc] initWithData:responseObject encoding:NSASCIIStringEncoding] mutableCopy];
NSLog(@"The respose is: %@", responseString);
if(error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"The response is: %@", responseString);
// Do something with the response
}
}];
[uploadTask resume];