URLConnection или HTTPClient: что предлагает лучшую функциональность и большую эффективность? - PullRequest
16 голосов
/ 04 марта 2012

Я ищу, чтобы создать форму входа для приложения Android. Я хочу использовать метод post для отправки информации на сервер, где она обрабатывается файлом PHP; который в свою очередь проверяет параметры и отправляет ответ.

Я просматривал реализации с использованием HttpClient и URLConnection, они очень похожи. Что более эффективно для использования в приложении для Android?

Спасибо Фабии

Ответы [ 6 ]

20 голосов
/ 04 марта 2012

Я считаю, что в этом случае это зависит от того, какой API вы найдете более естественным.Как правило, HTTPClient более эффективен в приложении на стороне сервера (или, возможно, в пакетном приложении), поскольку он позволяет указывать пул многопоточных подключений с максимальным количеством общих подключений и максимальным количеством подключений на хост (что обеспечивает одновременные подключения кодин и тот же хост не сериализуется (проблема с HttpUrlConnection)).Но в приложении для Android вы, вероятно, будете устанавливать только одно соединение за раз, так что это не имеет значения.

19 голосов
/ 20 марта 2013

Я провел небольшое исследование по этому вопросу, давно использую Apache HttpClient в Android.Мне показалось, что это естественный выбор, и я подумал, что со временем он улучшится.

С другой стороны, когда я разрабатывал для устаревшей BlackBerryOS, я использовал HttpUrlConnection.

Это было явноДля меня очевидно, что производительность BB была лучше, чем Android в контексте сетевых технологий.

HttpClient - это полнофункциональный, но с ошибками класс, который предоставляет огромный набор API / методов.Его можно использовать для создания полнофункционального веб-браузера для Android.Но у него есть некоторые проблемы с более старой версией Android, и Google не активно вносит в него свой вклад.

Принимая во внимание, что HttpUrlConnection имеет довольно полезный API, который просто полезен для разработки сетевого клиентского приложения.Это улучшило кэширование ответов и улучшенную технику сжатия на Android 2.3 и выше.Рекомендуется при создании сетевого клиентского приложения.

"Apache HTTPClient содержит меньше ошибок в Eclair и Froyo. Это лучший выбор для этих выпусков.

Для Gingerbread и лучше, HttpURLConnection - лучший выбор. Его простой API и небольшой размер отлично подходят для Android. Прозрачное сжатие и кэширование ответов сокращают использование сети, улучшают скорость и экономят заряд батареи. Новые приложения должны использовать HttpURLConnection; именно здесь Google будет тратить свою энергию в будущем. "

Подробнее см.

http://android -developers.blogspot.in / 2011 /09 / андроиды-HTTP-clients.html

9 голосов
/ 08 мая 2013

По мнению команды андроидов, вы должны использовать HttpURLConnection на Gingerbread и лучше, поскольку именно здесь они приложат новые усилия для разработки.

http://android -developers.blogspot.de / 2011 /09 / androids-http-clients.html

Редактировать: В эти дни я нашел okhttp от Square, который включает поддержку SPDY и автоматические повторные попытки: https://github.com/square/okhttp

1 голос
/ 04 октября 2017

Я бы вообще рекомендовал URLConnection, потому что он может обновляться с помощью JDK. В одном случае у нас был вызов, который использовал более старую версию HTTP Client, которая не поддерживала TLS v1.2.

Однако я бы не стал использовать URLConnection напрямую, обычно я использовал бы API более высокого уровня, например, JAX-RS Client или клиенты wsimport, для подключения к другому сайту.

0 голосов
/ 12 марта 2017

Хотя этот тег предназначен специально для Android, в целом HttpURLConnection также является лучшим выбором, когда речь идет о приложениях Java EE, поскольку он будет использовать стек HTTP, поставляемый с сервером приложений, который включает настройку сертификатов HTTPS на уровне сервера приложений. а не код.

Это также позволит вам получить последнюю версию SSL, предоставляемых стеком сервера приложений, вместо того, чтобы застрять со старой версией httpclient, которая может не работать с TLS 1.2

0 голосов
/ 03 апреля 2012

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

ПРИМЕЧАНИЕ. Этот HttpClient отличается от HTTPClient (примечание), который является реализацией другого поставщика.

...