2012-10-28 13 views
5

मैंने अपने ऐप में NSURLConnection (asynchronous) का उपयोग किया है जो वाईफाई (आईओएस 5 & आईओएस 6) पर ठीक काम कर रहा है। लेकिन यह 3 जी के साथ एक मुद्दा पैदा कर रहा है। जब मैं अपना ऐप 3 जी कनेक्शन चलाता हूं तो मुझे अपने didReceiveData विधि में कोई डेटा नहीं मिलता है।NSURLConnection आईओएस 3 जी अंक

मैंने अपने प्रतिनिधि तरीकों में लॉग डाल दिए हैं, लेकिन 3 जी का उपयोग करते समय, अनुरोध का समय समाप्त हो रहा है। मुद्दा क्या हो सकता है।

संपादित करें: सर्वर की तरफ -> यह दिखाता है कि मेरा अनुरोध सर्वर पर भेजा गया है & सर्वर ने ग्राहक को प्रतिक्रिया भी भेजी है।

संपादित करें 2:

कोड जो मैं लिखा है इस प्रकार है। के रूप में

नीचे
< HTTP/1.1 200 OK 
< X-Powered-By: Express 
< Access-Control-Allow-Origin: * 
< Content-Type: text/event-stream; charset=utf-8 
< Connection: keep-alive 
< Transfer-Encoding: chunked 
+0

अधिक महत्वपूर्ण बात यह है कि 'कनेक्शनडिडफिनिश लोडिंग:' या 'didFailWithError:' निकाल दिया गया? –

+0

हां, मेरे टाइमआउट अंतराल के बाद (40.0 - 120.0) किया गया थाफाइलविथरर को – JiteshW

+2

कहा जा रहा है, यह समझ में आता है, यहां एक पोस्ट है ऐप्पल इंजीनियरों से कुछ सुझाव आया: http://stackoverflow.com/a/12726729/792677 –

उत्तर

0

कोशिश Reachability ढांचे का उपयोग और वहाँ जाँच अगर यह 3 जी के लिए झूठे रिटर्न के लिए

NSURL *url = [NSURL URLWithString:@"someURL"]; 

NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url  
cachePolicy:NSURLRequestUseProtocolCachePolicy         
timeoutInterval:40.0]; 

//[req setHTTPShouldUsePipelining:YES]; 

[req setValue:@"x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[req setValue:@"someValue" forHTTPHeaderField:@"Accept"]; 
[req setValue:@"myCrdentails" forHTTPHeaderField:@"Authorization"]; 
[req setHTTPMethod:@"GET"]; 

[[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES]; 

प्रतिक्रिया हेडर हैं। यदि यह सच हो जाता है और आपको अभी भी टाइमआउट मिलता है, तो मॉडल सिंक करने के लिए प्रयास करें और देखें कि क्या होता है। कनेक्शन ठीक काम हो सकता है, लेकिन कुछ आपके कॉलबैक को रोकता है।

+0

जारी है हां, मैंने अपने ऐप में रीचैबिलिटी फ्रेमवर्क जोड़ा है और 3 जी के लिए इसके रिफ्रेशिंग ट्रू को जोड़ा है। सिंक मॉडल क्या है, यह कैसे करें। – JiteshW

+0

अब आप कॉलबैक के भीतर डेटा को संभालने, एसिंक्रोनस तरीके का उपयोग कर रहे हैं। कुछ सिंक्रोनस कनेक्शन विधि (जैसे 'NSData डेटा WithContentsOfURL: url') का उपयोग करने का प्रयास करें और देखें कि यह वही तरीके से व्यवहार करता है या नहीं। – whiteagle

+0

मैंने सिंक्रोनस का उपयोग करने की कोशिश की -> वाईफाई पर यह डेटा एक बार समाप्त होने पर डेटा दिखाता है और 3 जी पर यह भी कोई डेटा नहीं दिखाता है। यह खाली स्ट्रिंग दिखाता है। मुझे समझ में नहीं आता कि क्या हो रहा है। – JiteshW

0

क्या यह https है? मुझे आश्चर्य है कि कुछ एसएसएल सत्यापन विफलता हो रही है ... क्या आपने 3 जी पर कर्ल से पूछताछ करने की भी कोशिश की है? यदि सेलुलर वाहक प्रॉक्सी और आपको वैध डेटा नहीं दे रहा है, या यदि इसका आईपी संबंधित (काला सूची, बंद बंदरगाह, आदि) है, तो आपको एक अलग प्रतिक्रिया मिल सकती है। मैं सुनिश्चित करने के लिए कर्ल के साथ परीक्षण करेंगे। या तो एक जेल टूटे फोन से, या tethered के दौरान।

1

इस मुद्दे के साथ घंटों तक संघर्ष करने के बाद मुझे अंततः एक कार्य समाधान मिला।

[req setAllowsCellularAccess:YES]; 

हालांकि मूल्य NSURLRequest प्रकार की वस्तुओं के लिए हाँ होने की डिफ़ॉल्ट रूप से लगता है, यह समस्या हल हो: NSMutableURLRequest वस्तु स्थापित करने के लिए सेलुलर नेटवर्क या अनुमति दी जाए या नहीं एक विधि है मेरे लिए।

उम्मीद है कि यह मेरे जैसे किसी व्यक्ति को इस मुद्दे पर संघर्ष करने और इस प्रश्न को समाप्त करने में मदद करेगा।

0
NSURLConnection 3g से अधिक के साथ समस्या यह

अपलोड किए जा रहे या सर्वर से एक डेटा स्ट्रीमिंग और उस डेटा वहाँ संभाला और कुछ समय से अधिक NSURLConnection समय सीमा की जरूरत है टाइमआउट जो अपने हाथ मूल रूप से बाहर है ,,

है या कनेक्शन बहुत धीमा है, कनेक्शन बंद हो जाएगा और NULL डेटा लौटाता है .. क्योंकि कनेक्शन आईडीएलई राज्य में जाता है ...

इस तरह के मुद्दे को दूर करने के लिए आपको webservice को खाली रिक्त स्थान "रिक्त स्थान" भेजने की आवश्यकता है आप देखेंगे कि प्रत्येक पैकेट आगमन पर didReceiveData लगाया गया ..

रिक्त स्थान अभ्यस्त को प्रभावित receivedData .. मेरे मामले में प्रतिक्रिया एक JSON है और मैं JSonKit का उपयोग यह पार्स करने के लिए ,, ...

उम्मीद है कि यह किसी को मदद मिलेगी ..

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