2013-11-09 6 views
6

मेरे पास एक विंडोज फोन 8 प्रोजेक्ट है जहां मैंने पीसीएल (पोर्टेबल क्लास लाइब्रेरी) प्रोजेक्ट का उपयोग करने के लिए भी लिया है क्योंकि मैं Win8 ऐप बनाने जा रहा हूं।HttpClient's GetStringAsync क्यों अविश्वसनीय धीमा है?

हालांकि, मेरे एपीआई (Azure में) को कॉल करते समय मेरे HttpClient's GetStringAsync इतना धीमा है। मैंने डेटाटाइम के साथ कुछ डीबग में फेंक दिया और GetStringAsync 14 सेकंड की तरह लिया! और कभी-कभी इसमें अधिक समय लगता है।

मैं जो कर रहा हूं वह मेरी एज़ूर एपीआई साइट से सरल JSON पुनर्प्राप्त कर रहा है। मेरे एंड्रॉइड क्लाइंट में नहीं एक ही सेकेंड में एक ही डेटा प्राप्त करने में समस्या है ... तो क्या मुझे कुछ याद आ रही है?

सेटअप सुंदर सीधे आगे है:

HttpClient client = new HttpClient(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
client.DefaultRequestHeaders.Add("X-Token", "something"); 
string responseJSON = await client.GetStringAsync("url"); 

मैं डिबग बार देता है सही से पहले और वहाँ इंतजार के बाद है, के बीच में यह 14 सेकंड है!

क्या कोई जानता है क्यों?

+0

क्या आपके पास कॉल स्टैक में अन्य एसिंक विधियां हैं? क्या आप हमेशा उनका इंतजार कर रहे हैं? कभी-कभी धीमी ऐप का मतलब है कि आप 'प्रतीक्षा' के बजाय कहीं भी 'Result' का उपयोग कर रहे हैं। उदाहरण के लिए 'स्ट्रिंग प्रतिक्रिया जेएसओएन = क्लाइंट। गेटस्ट्रिंगएसिंक ("यूआरएल")। परिणाम; '। –

+0

आपकी यूरी कितनी बड़ी स्ट्रिंग कर रही है? यदि आपने बड़ी गति अंतर है तो क्या आपने WP8 पर उदाहरण के लिए वेब क्लाइंट का उपयोग करने का प्रयास किया है? वेब ब्राउज़र में उपयोग करते समय प्रतिक्रिया की गति के बारे में क्या? –

+0

@chue x im उन सभी का इंतजार कर रहा है, लेकिन फिलहाल मैं इसे चला रहा हूं। उपयोग करने की कोशिश की। परिणाम हमेशा के लिए लेता है! – Jason94

उत्तर

-1

GetStringAsync को गेटस्ट्रिंग के साथ बदलें ताकि यह सुनिश्चित हो सके कि यह वास्तव में आपकी समस्या का कारण बन रहा है और स्टैक में कुछ और नहीं है।

+0

यदि मैं सही ढंग से याद कर सकता हूं तो HttpClient पर कोई GeString विधि नहीं है। –

+0

आप सही हैं। वेब क्लाइंट के साथ भ्रमित हो गया: https://msdn.microsoft.com/en-us/library/fhd1f0sw(v=vs.110).aspx इसमें एक और एसिंक समकक्ष है। यह httpclient को एक संभावित समस्या के रूप में खत्म करने में मदद करेगा। –

4

मुझे एक ही समस्या थी, और यह सवाल मिला। मेरे लिए समस्या यह है कि HttpClient प्रॉक्सी का उपयोग करने का प्रयास करता है, लेकिन अधिकांश लोगों के लिए प्रॉक्सी मौजूद नहीं है। यह वही है जो इसे धीमा कर देता है। निम्नलिखित में प्रारंभिक परिवर्तन बदलें और आपको एक महत्वपूर्ण गति दिखाई देगी।

HttpClientHandler hch = new HttpClientHandler(); 
hch.Proxy = null; 
hch.UseProxy = false; 

HttpClient client = new HttpClient(hch); 
संबंधित मुद्दे