2013-05-17 9 views
11
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:///]; 
NSURLRequest *req = [[NSURLRequest alloc]initWithURL:url]; 
NSURLConnection *con = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:YES]; 

अपने प्रोजेक्ट में मैं NSURLConnection पर sendSynchronousRequest इस्तेमाल किया। यह मुझे कभी-कभी दुर्घटना देता है।अतुल्यकालिक अनुरोध उदाहरण

तो मैं इस कोड को AsynchronousRequest पर परिवर्तित करता हूं। मुझे उपयुक्त कोड नहीं मिला।

कोई मुझे लिंक या पोस्ट कोड देता है जो मेरे कोड के लिए उपयुक्त है। किसी भी ढेर की सराहना की जाएगी।

+2

पर सेट करने के बाद पोस्ट का अनुसरण कर सकते हैं, आपको इस प्रश्न को खुले अंत और स्थानीयकृत होने के रूप में बंद होने की संभावना है। मैं सुझाव दूंगा कि आप वर्णन करें कि आप क्या करने की कोशिश कर रहे हैं और आपने क्या प्रयास किया है और यह क्यों काम नहीं कर रहा है ताकि लोग सीधे अनुरोध का उत्तर दे सकें। बहुत से लोग मदद करने में सक्षम और सक्षम हैं, लेकिन अधिक विशिष्ट प्रश्न जो इंगित करते हैं कि आपने क्या प्रयास किया है और यह क्यों काम नहीं करता है वे सर्वोत्तम जवाब प्राप्त करते हैं। – gaige

+0

@gaige मुझे प्यार है कि यह कैसे बंद नहीं हुआ :) – Supertecnoboff

उत्तर

20

कुछ ऐसी चीजें हैं जो आप कर सकते हैं।

  1. आप sendAsynchronousRequest का उपयोग करें और कॉलबैक ब्लॉक संभाल कर सकते हैं।
  2. आप AFNetworking लाइब्रेरी का उपयोग कर सकते हैं, जो आपके सभी अनुरोधों को एसिंक्रोनस फैशन में संभालता है। उपयोग करने और स्थापित करने के लिए बहुत आसान है।

कोड विकल्प 1 के लिए: विकल्प 2 के लिए

NSURL *url = [NSURL URLWithString:urlString]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (error) { 
    //NSLog(@"Error,%@", [error localizedDescription]); 
    } 
    else { 
    //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
    } 
}]; 

कोड:

आप पुस्तकालय & डाउनलोड करने के लिए चाहते हो सकता है पहले अपनी परियोजना में शामिल करना होगा। फिर निम्नलिखित करें। आप here

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]); 
} failure:nil]; 

[operation start]; 
+1

क्या नेटवर्क धीमा होने पर उपयोगकर्ता इंटरैक्शन को अवरुद्ध करता है? – Xcode

+0

मैंने आपके 1 विकल्प का उपयोग किया। इसे कैसे संभालना सफलता नहीं है? – Xcode

+0

आप किसी भी त्रुटि को संभालने के लिए हैंडलर ब्लॉक को पूरा करने में एनएसईआरआर * त्रुटि का उपयोग कर सकते हैं। – Harish

संबंधित मुद्दे