android - HTTP Post requests using HttpClient take 2 seconds, why? -


अपडेट: स्वयं का जवाब मिला, नीचे देखें: -)

हाय,

I'am वर्तमान में एक एंड्रॉइड ऐप कोडिंग जो HTTP पोस्ट और AsyncTask का उपयोग कर पृष्ठभूमि में सामग्री सबमिट करता है मैं इसके लिए पैकेज का उपयोग करता हूँ मैं अपने कोड पर आधारित था।

असल में, मेरा कोड इस तरह दिखता है:

  सार्वजनिक शून्य पोस्टडेटा () {// एक नया एचटीटीपी क्लाइंट और पोस्ट हैडर एचटीटीपीएलएलटीएल httpclient = new DefaultHttpClient (); एचटीटीपी पोस्ट httppost = नया एचटीटीपी पोस्ट ("http://192.168.1.137:8880/ फॉर्म"); {सूची & lt; NameValuePair & gt; NameValuePairs = नया ArrayList & lt; NameValuePair & gt; (2); NameValuePairs.add (नया BasicNameValuePair ("id", "12345")); NameValuePairs.add (नया BasicNameValuePair ("stringdata", "AndDev शांत है!")); Httppost.setEntity (नई UrlEncodedFormEntity (nameValuePairs)); // Execute HTTP पोस्ट अनुरोध एचटीटीपी उत्तरप्रेषण प्रतिक्रिया = httpclient.execute (httppost); } पकड़ (क्लाइंटप्रोटोकल एक्स्प्शन ई) {लॉग.ई (टैग, ई.टीस्ट्रिन्ग ()); } पकड़ (आईओई एक्सप्शन ई) {लॉग। ए (टैग, ई.टीस्ट्रिन्ग ()); }}  

समस्या यह है कि httpclient.execute (..) लाइन लगभग 1.5 से 3 सेकंड लेती है, और मुझे समझ में नहीं आ रहा है कि बस HTTP के साथ एक पृष्ठ का अनुरोध करने के लिए लगभग 80 एमएस या उससे अधिक लेता है, इसलिए समस्या नेटवर्क लेटेंसी ही नहीं लगता है।

समस्या सर्वर साइड पर नहीं दिखती है, I ने भी इसी तरह धीमा परिणाम के साथ डेटा पोस्ट करने की कोशिश की है।

यह एम्यूलेटर पर और मेरे नेक्सस वन (एंड्रॉइड 2.2 के साथ दोनों) के साथ होता है।

अगर आप चाहते हैं कि पूर्ण कोड को देखो, मैंने इसे डाल दिया है।

यह एक बटन के पुश पर AsyncTask का उपयोग करते हुए पृष्ठभूमि में HTTP पोस्ट करना एक डमी प्रोग्राम है। यह मेरा पहला एंड्रॉइड ऐप है, और मेरा पहला जावा कोड एक लंबे समय से है और अनैतिक, मेरा पहला सवाल स्टैक्सहोवरफ्लो; -)

कोई भी विचार क्यों httpclient.execute (httppost) इतनी देर तक लेता है?

ठीक है, मैंने कुछ अधिक जांच के साथ यह स्वयं हल किया मुझे जो करना था वह सभी पैरामीटर जोड़ना था जो HTTP संस्करण को 1.1 के रूप में सेट करता है, जैसा कि निम्न है:

  एचटीटीपी पैराम्स = नए बेसिक HttpParams (); Params.setParameter (कोरप्रोटोकॉलपीएन। PROTOCOL_VERSION, एचटीटीपी। संस्करण। एचटीटीपी_1_1); एचटीटीपी क्लाइंट http क्लाइंट = नया डिफ़ॉल्ट एचटीटीपी क्लाइंट (पैराम्स);  

मैंने इसे धन्यवाद से बहुत अच्छा और बुकूर्म और कुछ परीक्षण-और-त्रुटि।

अगर मुझे सही याद है, तो HTTP 1.0 एक नया TCP कनेक्शन खोलता है हर अनुरोध के लिए क्या यह बड़ी देरी की व्याख्या करता है?

एक HTTP पोस्ट अनुरोध अब WLAN से 50 और 150 एमएस के बीच और 3 जी के बीच 300 और 500 एमएस के बीच कुछ है।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -