2010-07-09 6 views
9

मैं एक आईपैड ऐप पर काम कर रहा हूं जिसमें एक एम्बेडेड HTTP सर्वर उच्च पोर्ट पर सुन रहा है, और मैं इस HTTP सर्वर से पृष्ठों को लोड कर रहा हूं एक UIWebViewUIWebView को http: // localhost लोड करने के लिए अनुमति दें: इंटरनेट कनेक्शन के बिना पोर्ट/पथ यूआरआई

ऐप की कार्यक्षमता के लिए, यह महत्वपूर्ण है कि यह तब काम करता है जब कोई नेटवर्क कनेक्शन उपलब्ध न हो।

Error Domain=NSURLErrorDomain Code=-1009 UserInfo=0x1b4a50 "no Internet connection" 
: जब मैं अपने आईपैड पर वाई-फाई को निष्क्रिय और एप्लिकेशन को चलाने के

UIWebView रूप http://localhost:port/path

के URL लोड कर रहा है, UIWebView के प्रतिनिधि निम्न NSError वस्तु के साथ एक webView:didFailLoadWithError: संदेश हो जाता है

स्पष्ट रूप से एसडीके चालाक हो रहा है और यह पता लगा रहा है कि इसका कोई इंटरनेट कनेक्शन नहीं है, लेकिन इंटरनेट कनेक्शन के बिना 127.0.0.1/localhost/::1 तक पहुंचना संभव होना चाहिए। मैं ऐप्पल को बग की रिपोर्ट करूंगा लेकिन इस दौरान इस एसडीके बग के लिए संभावित कामकाज के बारे में सलाह के लिए यहां पूछ रहा हूं।

कृपया ध्यान दें: आवेदन के आर्किटेक्चर को बदलना इस प्रश्न के दायरे में नहीं है।

+0

UIWebView के 'loadHTMLString: baseURL:' विधि के साथ पृष्ठों को लोड क्यों न करें? – lucius

+1

मैं वास्तव में बहुत अधिक विस्तार में नहीं जा सकता (इसलिए प्रश्न की आखिरी वाक्य), लेकिन ऐसे अच्छे कारण हैं जिनसे मैं उस विधि का उपयोग नहीं कर सकता जिसमें बाहरी स्क्रिप्ट, शैली और छवि संसाधनों को संभालने की आवश्यकता शामिल है, जो पृष्ठ संदर्भ और कौन सा है आरंभिक पृष्ठ लोड शुरू होने से पहले आसानी से निर्धारित नहीं किया जाता है। एम्बेडेड वेब सर्वर ऐसे संसाधनों के लिए प्रॉक्सी सर्वर की तरह काम कर रहा है जो इसे वाई-फाई/3 जी नेटवर्क एक्सेस के अलावा अन्य साधनों के माध्यम से प्राप्त करता है। – jbg

उत्तर

7

आप NSURLProtocol के साथ अपने स्वयं योजना को परिभाषित करने और लागू करने में यह बजाय एक HTTP सर्वर चल रहा जांच करने के लिए कर सकते हैं। यह आपको HTTP प्रोटोकॉल को लागू किए बिना यूआरएल की लोडिंग को संभालने की अनुमति देगा, और इस समस्या को एसडीके के साथ मिल जाएगा जहां HTTP प्रोटोकॉल जल्दी विफल रहता है यदि आपके पास नेटवर्क कनेक्शन नहीं है।

+0

धन्यवाद। यह वही है जो मैं खोज रहा था, और मैं अपने 'NSURLProtocol' subclass को 'http' और' https' प्रोटोकॉल का जवाब देने में भी सक्षम था, जो प्रभावी रूप से डिफ़ॉल्ट प्लेटफ़ॉर्म HTTP व्यवहार को ओवरराइड कर रहा था। बहुत खुबस। – jbg

+1

ऐसा लगता है कि समस्या केवल 'UIWebView' नियंत्रण के साथ है और नए नियंत्रण में नहीं -' WKWebView'। बाद में नियंत्रण इंटरनेट कनेक्शन/विफलता को मान्य किए बिना http स्थानीय होस्ट फ़ाइल एक्सेस की अनुमति देता है। मैंने डाउनलोड किए गए वीडियो के लिए अपने ऐप में यह व्यवहार देखा। मेरा ऐप 'UIWebView' (आईओएस 7) और 'WKWebView' (आईओएस 8) में'

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