Отправляем GET запрос в Android без Apache

Когда заходит разговор о работе с HTTP под Android чаще всего сразу же вспоминают библиотеку классов от Apache. При этом незаслуженно игнорируя другой не менее эффективный способ обмена данными.

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

Речь идёт о пакете java.net, который входит в состав «обычного» Java SE, но доступен также и в Android.

Для отправки запроса потребуется всего два класса из этого пакета URL и HttpURLConnection.

Вначале создадим подключение к тому ресурсу, к которому планируется оправить запрос. Для этого создадим объект класса URL и на его основе получим объект класса HttpURLConnection.

Затем собственно отправляем сам запрос и обрабатываем результат:

В чём преимущество java.net перед Apache?

  1. Это стандартный пакет Java.
    Для его использования не требуется устанавливать или подключать каких-либо сторонних библиотек. А, писать программы с его использованием можно практически «не оглядываясь» на версию Android;
  2. Больше возможностей контролировать процесс обмена данными.
    В частности, можно без труда анализировать ответ сервера, что часто требуется при работе с RestAPI;
  3. Более простая и компактная реализация программ для работы с HTTP.
    Для того чтобы отправить даже простой запрос в библиотеке от Apache требуется работа с тремя объектами. В java.net всё сводится, по сути, к одному HttpURLConnection. При этом без ущерба для архитектуры приложения;
  4. Java SE и, в частности, java.net превосходно документированы.
    К сожалению, этого нельзя сказать о библиотеке от Apache. Документация по ней представлена только в виде примеров, которые уже не актуальны для более новых версий.

Последнее преимущество обычно принято как-то сбрасывать со счетов. Однако про него почему-то столь же часто вспоминают, когда дело доходит до сложных или просто не тривиальных задач и все остальные способы разобраться в проблеме исчерпаны. О том насколько влияет наличие и качество документации на возможность освоения для новичков, и говорить не приходится.

Из недостатков рассматриваемого способа можно отметить только один. HttpURLConnection позволяет получить данные только в виде набора байт. Поэтому, чтобы получить ответ с сервера в виде строки требуется выполнить преобразования.

В тоже время библиотека Apache позволяет получить данные в строковом представлении напрямую (возможно, это одна из причин её популярности).

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

Таким образом, использование пакета java.net получается ничем не хуже (а в некотором отношении даже и лучше) того, что предлагает Apache. Просто нужно правильно его использовать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector