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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

HttpClient - это полностью функциональный, но плохой класс, который предоставляет огромный набор API/методов. Его можно использовать для создания полнофункционального WebBrowser для 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/androids-http-clients.html

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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