Apache http client или URLConnection

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

Есть предположения?

Solutions Collecting From Web of "Apache http client или URLConnection"

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

РЕДАКТИРОВАТЬ
Аналогичный вопрос задавали раньше: 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 в свой проект Android (в качестве дополнительной выгоды это позволит вам не зависеть от исправлений ошибок Google и обновлений поставщиков). Однако есть одна ошибка: чтобы предотвратить возможные столкновения со встроенной библиотекой, вы должны переименовать пакеты httpclient с помощью инструмента JarJar. Оказалось, что кто-то уже сделал это (для загрузки доступны пакеты с переупакованными банками и Android-библиотеками):

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

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

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

Изменения в запасе HttpClient

  • Переименовано все пакеты org.apache.http в ch.boye.httpclientandroidlib
  • Удалены все классы, зависящие от org.ietf. * (Аутентификация SPNEGO)
  • Заменено org.apache.commons.codec.binary.Base64 с android.util.Base64
  • Создал новый класс HttpClientAndroidLog для замены org.apache.commons.logging

В Gingerbread и позже, HttpURLConnection – путь. Рассмотрите устаревший Apache HttpClient. (Также обратите внимание, что Android не использует HttpClient 4.1, упомянутый в другом комментарии.)

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