Правильный способ управления HTTP-соединением в Android

Я написал две программы, которые обрабатывают HTTP-запрос. Я хотел знать, лучше ли один, чем другой -

Программа 1 (с использованием HttpURLConnection)

          URL url = new URL("https://www.google.com/");

          HttpURLConnection connection = (HttpURLConnection) url.openConnection();

          connection.setRequestMethod("GET");

          connection.setDoOutput(false);

          connection.connect();

          reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

          stringBuilder = new StringBuilder();

Программа 2 (с использованием HttpPost)

         DefaultHttpClient httpClient = new DefaultHttpClient();

         HttpPost httpPost = new HttpPost("https://test.com");

         HttpResponse httpResponse = httpClient.execute(httpPost);

         InputStream inputStream = httpResponse.getEntity().getContent();

         InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

Также в программе 2 я использую синглтон для получения объекта соединения. Но в программе 1 нет глобального объекта подключения, и мне нужно воссоздавать объект HttpURLConnection каждый раз, когда я делаю запрос. Пожалуйста, дайте мне знать, если я на правильном пути.

Спасибо


person Fox    schedule 19.11.2013    source источник


Ответы (2)


Я хотел бы предложить вам использовать библиотеку Android Asynchronous Http Client. Тогда вы можете избежать этих основных вещей. Что мне больше всего нравится, так это то, что HTTP-запросы выполняются вне потока пользовательского интерфейса.

person Thein    schedule 19.11.2013

Также в программе 2 я использую синглтон для получения объекта соединения. Но в программе 1 нет глобального объекта подключения, и мне нужно воссоздавать объект HttpURLConnection каждый раз, когда я делаю запрос.

Способ 2 выглядит проще, но он такой старый :

HTTP-клиент Apache — HTTPPost

DefaultHttpClient и родственный ему AndroidHttpClient — это расширяемые HTTP-клиенты, подходящие для веб-браузеров. У них большие и гибкие API. Их реализация стабильна, и в них мало ошибок. Но большой размер этого API затрудняет его улучшение без нарушения совместимости. Команда Android активно не работает над HTTP-клиентом Apache.

HttpURLConnection

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

До Froyo в HttpURLConnection были досадные ошибки.

Мы должны выбрать метод 1, когда:

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

И метод 2, когда :

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

Спасибо,

person Huy Tower    schedule 19.11.2013