Вопрос

Мне нужно скачать веб -страницу в приложении Android, и мне трудно решить, использовать ли клиент Android Apache HTTP или UrlConnection Java.

Какие-нибудь мысли?

Это было полезно?

Решение

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

РЕДАКТИРОВАТЬ
Аналогичный вопрос был задан ранее: httpclient против httpurlconnection. Я бы предположил, что HttpUrlConnection несколько быстрее, как HttpClient строится на вершине стандартных библиотек Java. Однако Я бы нашел HttpClient Код намного быстрее и легче писать и поддерживать. Согласно комментариям ниже, основные элементы HttpClient были оптимизированы производительность.

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

Другие советы

Google молча установил использование клиента Apache HTTP с момента 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 Library Projects доступны для скачивания):

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

Это переупаковка httpclient 4.1 для Android. Версия httpclient в Android SDK составляет 4,0beta2. Было несколько обновлений в HTTPClient и некоторые столь необходимые ошибки, такие как кэширование Auth с 4.0beta.

Поскольку Google установил httpclient в пользу стандарта Java httpurlconnection, я создал сценарий для преобразования выпуска запаса Httpclient Apache в библиотеку Android.

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

  • Переименованные в все пакеты org.apache.http to ch.boye.httpclientandlib
  • Удалил все классы в зависимости от 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top