2012-06-20 18 views
6

मुझे MonoDroid में Webrequests का उपयोग करके और यादृच्छिक रूप से टाइमआउट प्राप्त करने में बहुत परेशानी हो रही है। मेरा कोड ठीक काम करता है फिर कभी-कभी सभी अनुरोध केवल टाइमआउट और काम नहीं करते हैं।मोनोड्रॉइड एचटीपी वेबवेक्वेस्ट और वेब क्लाइंट अविश्वसनीय?

मैंने सत्यापित किया है कि मेरे अनुरोधों में उपयोग की जाने वाली वेबसाइसेस समस्या नहीं है। आप देख सकते हैं यह बुनियादी सामान है

bool bolOk = false; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://www.website.com/service/"); 
request.Timeout = 20000; 
request.Credentials = gv_objCredentials; 

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { 
    bolOk = response.StatusCode == HttpStatusCode.OK; 
} 

:

यहाँ कुछ कोड है कि मैं एक वेब सेवा MonoDroid का उपयोग करने से कुछ डेटा का अनुरोध करने का उपयोग कर सकते का एक उदाहरण है। मैं ThreadPool.QueueUserWorkItem या TaskFactory का उपयोग कर उपरोक्त की तरह यूआई को उपरोक्त कोड का उपयोग करता हूं।

मैंने जो देखा है वह है कि अगर अनुरोध मेरे ऐप से बाहर निकलना शुरू हो जाता है और मैं इसे अपने कंप्यूटर में प्लग करता हूं तो ऐप को बिना किसी समय के अनुरोधों को मोनो डेवेल से डीबग करता हूं। मुझे यकीन नहीं है कि इसका मतलब कुछ भी है। यह फोन के समान नेटवर्क पर ब्राउज़र का उपयोग करके मेरे कंप्यूटर से वेब सर्विसेज का परीक्षण करने के समान है। Webservices हमेशा किसी भी मुद्दे के बिना काम करते हैं।

MonoDroid से Webrequests बनाने का सबसे अच्छा तरीका क्या है?

मैं कैसे सुनिश्चित कर सकता हूं कि मेरे अनुरोध हमेशा सफल होते हैं और यदि webservice सही तरीके से परिचालन कर रहा है तो समय-समय पर नहीं होगा?

+1

क्या आप किसी भी मौके पर कई अनुरोधों को फायर कर रहे हैं? मुझे अतीत में कई प्लेटफार्मों के साथ कई मुद्दों के साथ कृपया ध्यान नहीं दिया गया है, हालांकि मुझे एक ही फैशन में मोनोड्रॉइड को हथियाने का आनंद नहीं मिला है। –

+0

हाय क्रिस, हाँ यह मामला हो सकता है। मैं इस कोड का इस्तेमाल अलग थ्रेड पर कर रहा हूं। क्या आपको लगता है कि जहां भी मैं वेबरेक्वेस्ट में सिंक लॉक का उपयोग कर रहा हूं? – startupsmith

+1

यदि ऐसा है, तो इसे एक शॉट दें ताकि आप केवल एक बार में 1 अनुरोध कर सकें। मुझे एक मुद्दा भी मिला है जहां यह प्रति मुख्य UI फ्रेम प्रति अनुरोध (और अधिकतम संचयी बाइट आकार) था जिसने एक समस्या उत्पन्न की (मुझे लगता है कि ब्राउज़र के कारण)। तो शायद आप अनुरोध को कतार में रखने और धीरे-धीरे उन्हें कॉल करने का प्रयास कर सकते हैं और देख सकते हैं कि यह काम करता है या नहीं। –

उत्तर

1

एंड्रॉइड (4.2.5) के लिए मोनो का एक नया संस्करण है जो WebRequest और webRequestStream के साथ कई बग को हल करता है। आप यहां रिलीज नोट्स देख सकते हैं: http://docs.xamarin.com/android/Releases/Mono_For_Android_4/Mono_for_Android_4.2.5

मैं सुझाव देता हूं कि नवीनतम बिट्स डाउनलोड करें और जांचें कि यह काम करता है या नहीं। यदि नहीं, तो कृपया एक बग फ़ाइल करें और वे निश्चित रूप से उत्पाद के अगले संस्करण में इसे ठीक कर देंगे।

2

मुझे ज़ैमरिन 4.2.6 और 4.2.8 पर समस्या थी।

Xamarin समर्थन के लिए धन्यवाद, वे समस्या की पहचान की और सुझाव दिया मैं armeabi-v7a के बजाय अपने प्रोजेक्ट गुण में armeabi (कुछ मल्टी कोर प्रोसेसर मुद्दा वर्णित here)

पर निर्भर करता है कि क्या आप की योजना अपने निर्माण को निशाना बनाया बहु-कोर प्रोसेसर का समर्थन करें या नहीं, आपको हमारे this post की जांच करनी चाहिए और आपको अपनी .csproj फ़ाइल को मैन्युअल रूप से संपादित करने की आवश्यकता हो सकती है।

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