Apache http client или URLConnection [дубликат]


этот вопрос уже есть ответ здесь:

  • URLConnection или HTTPClient: что предлагает лучшую функциональность и большую эффективность? 6 ответов

Мне нужно загрузить веб-страницу в приложении для android, и мне трудно решить, использовать ли http-клиент Android apache или URLConnection java.

любой мысли?

3 51

3 ответа:

для большинства вещей я бы сказал, что HttpClient - Это путь. Однако есть некоторые ситуации и крайние случаи, когда я бы вернулся к URLConnection. Примеры крайних случаев здесь и здесь

EDIT
Аналогичный вопрос был задан ранее: httpclient vs httpurlconnection. я бы предположил, что HttpUrlConnection несколько быстрее, чем HttpClient построен поверх стандартных библиотек Java. Однако Я бы нашел HttpClient код гораздо быстрее и проще писать и поддерживать. Согласно комментариям ниже, основные элементы HttpClient была оптимизирована производительность.

если производительность является серьезной проблемой, лучше всего написать два клиента, по одному с использованием каждого метода, а затем проверить их обоих. Если вы сделаете это, пожалуйста, сообщите нам результаты.

Google молча осуждает использование HTTP-клиента Apache с момента Gingerbread:http://android-developers.blogspot.com/2011/09/androids-http-clients.html. и хотя они не отметили его устаревшей аннотацией, они предлагают вам использовать HttpURLConnection для новых приложений как:it is where we [Google] will be spending our energy going forward.

лично мне это решение не нравится и я бы предпочел придерживаться HttpClient 4.1+, так как он быстрее, имеет меньше ошибок и регулярно обновляется. И пока вы не можете обновить системная библиотека до версии 4.1 вы можете включить HttpClient jar в свой проект Android (в качестве дополнительного преимущества это позволит вам не зависеть от исправлений ошибок Google и обновлений поставщиков). Однако есть один подводный камень: чтобы предотвратить возможные столкновения со встроенной библиотекой, вы должны переименовать пакеты httpclient с помощью инструмента JarJar. Оказалось, кто-то уже это сделал (переупакованные jar и проекты библиотеки Android доступны для скачивания):

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

это переупаковка HttpClient 4.1 для Android. Версия HttpClient в Android SDK - это 4. 0beta2. Их было несколько обновления HttpClient и некоторые столь необходимые исправления, такие как кэширование auth начиная с бета-версии 4.0.

поскольку Google устарел HttpClient в пользу стандарта Java HttpURLConnection я создал скрипт для конвертации акций выпуска Apache HttpClient в библиотеку Android.

изменения в складе HttpClient

  • переименовал все пакеты org.апаш.http to ch.бой.httpclientandroidlib
  • удалены все классы, зависящие от организации.группа IETF.* (SPNEGO аутентификация)
  • заменить орг.апаш.палата общин.кодек.двоичный.Base64 с android.утиль.В base64
  • создан новый класс HttpClientAndroidLog для замены орг.апаш.палата общин.ведение журнала

в Gingerbread и более поздних версиях HttpURLConnection-это путь. рассмотрим с помощью HttpClient Апача рекомендуется. (также обратите внимание, что Android не использует HttpClient 4.1, упомянутый в другом комментарии.)

Если у вас есть случай, когда Apache HttpClient быстрее, сообщите об этом как об ошибке здесь:http://code.google.com/p/android/issues/list