java - अपाचे http क्लाइंट या URLConnection




android apache-commons-httpclient (2)

इस प्रश्न का पहले से ही यहाँ एक उत्तर है:

मुझे एंड्रॉइड ऐप पर एक वेब पेज डाउनलोड करने की आवश्यकता है और मुझे यह तय करने में कठिन समय है कि एंड्रॉइड एपाचे http क्लाइंट या जावा के URLConnection का उपयोग करें या नहीं।

कोई विचार?


Google ने चुपचाप अपाचे HTTP क्लाइंट उपयोग को जिंजरब्रेड के बाद से हटा दिया है: android-developers.blogspot.com/2011/09/… । और जब उन्होंने इसे हटाए गए एनोटेशन के साथ चिह्नित नहीं किया, तो वे आपको नए अनुप्रयोगों के लिए HttpURLConnection का उपयोग करने का सुझाव देते हैं: it is where we [Google] will be spending our energy going forward

व्यक्तिगत रूप से मुझे वह निर्णय पसंद नहीं है और वह HttpClient 4.1+ पर चिपकेगा, क्योंकि यह तेज है, कम कीड़े हैं और नियमित रूप से अपडेट किया जाता है। और जब आप सिस्टम लाइब्रेरी को 4.1 संस्करण में अपग्रेड नहीं कर सकते हैं, तो आप अपने एंड्रॉइड प्रोजेक्ट में HttpClient जार को शामिल कर सकते हैं (जैसा कि अतिरिक्त लाभ यह आपको Google बग फिक्स और विक्रेता अपडेट पर निर्भर नहीं करने की अनुमति देगा)। हालांकि एक गड़बड़ी है: अंतर्निहित लाइब्रेरी के साथ संभावित टकराव को रोकने के लिए आपको जारजर टूल का उपयोग करके httpclient पैकेज का नाम बदलना चाहिए। किसी ने पहले से ही ऐसा कर दिया था (रीपैकेडेड जार और एंड्रॉइड लाइब्रेरी प्रोजेक्ट डाउनलोड के लिए उपलब्ध हैं):

http://code.google.com/p/httpclientandroidlib/

यह एंड्रॉइड के लिए HttpClient 4.1 का एक रीपैकेजिंग है। Android SDK में HttpClient का संस्करण 4.0beta2 है। 4.0beta के बाद से HttpClient और कई अति-आवश्यक बगफिक्स जैसे कई कैटिगरी में कई अपडेट किए गए हैं।

चूंकि Google ने जावा मानक HttpURLConnection के पक्ष में HttpClient को अपदस्थ कर दिया है इसलिए मैंने Apache के HttpClient के स्टॉक रिलीज़ को एंड्रॉइड लाइब्रेरी में परिवर्तित करने के लिए एक स्क्रिप्ट बनाई।

HttpClient के स्टॉक में परिवर्तन

  • सभी संकुल का नाम दिया। org.apache.http से ch.boye.httpclientandroidlib
  • Org.ietf। * (SPNEGO प्रमाणीकरण) पर निर्भर सभी वर्गों को हटा दिया गया
  • Android.util.Base64 के साथ प्रतिस्थापित org.apache.commons.codec.binary.Base64
  • Org.apache.commons.log को बदलने के लिए एक नया वर्ग HttpClientAndroidLog बनाया गया

जिंजरब्रेड और बाद में, HttpURLConnection जाने का रास्ता है। अपाचे HttpClient पदावनत पर विचार करें। (यह भी ध्यान दें कि एंड्रॉइड HttpClient 4.1 का उपयोग नहीं करता है, एक अन्य टिप्पणी में उल्लेख किया गया है।)

यदि आपके पास कोई ऐसा मामला है जहां Apache HttpClient तेज है, तो इसे यहां बग के रूप में रिपोर्ट करें: http://code.google.com/p/android/issues/list





apache-commons-httpclient