Рубрики
Без рубрики

Чтение органа реагирования HTTP как строки на Java

Изучите несколько вариантов чтения тела ответа HTTP в качестве строки на Java

Автор оригинала: baeldung.

1. Введение

В этом учебнике мы исследуем несколько библиотек для чтения органа реагирования HTTP в качестве строки в Java. С первых версий Java предоставила API HttpURLConnection. Это включает в себя только основные функции и известен не очень удобно.

С выпуском JDK 11 Java представила новую и улучшенную HttpClient API для обработки http связи. Мы охватим эти библиотеки и проверим некоторые альтернативы, такие как Apache HttpClient и Весенний отдых шаблон .

2. HttpClient

Как мы уже упоминали ранее, HttpClient был добавлен в Java 11. Это позволяет нам получить доступ к ресурсам по сети. Но, в отличие от HttpURLConnection , HttpClient поддерживает HTTP/1.1 и HTTP/2 . Более того, обеспечивает как синхронные, так и асинхронные типы запросов .

HttpClient предлагает современный API с большой гибкостью и мощными функциями. Главным образом, этот API состоит из трех основных классов: HttpClient , HttpRequest , и HttpРеспонс .

HttpРеспонс описывает результат HttpRequest звать. HttpРеспонс не создается напрямую и доступен, когда тело было полностью получено.

Чтобы прочитать ответ тела в качестве Струна, Сначала нам нужно создать простые объекты клиента и запроса:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(DUMMY_URL))
    .build();

Затем мы просто используем BodyHandlers и вызов метода ofString () чтобы вернуть ответ:

HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

3. HttpURLConnection

HttpURLConnection является легким клиентом HTTP, используемым для доступа к ресурсам через протокол HTTP или HTTPS и позволяет нам создать ВходНая трансляция . Как только мы Входной поток, мы можем прочитать его как нормальный местный файл.

На Java основными классами, которые мы можем использовать для доступа к Интернету, являются java.net.URL класс и java.net.httpURLConnection класс. Во-первых, мы будем использовать URL класс, чтобы указать на веб-ресурс. Затем мы можем получить к нему доступ с помощью HttpURLConnection класс.

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

HttpURLConnection connection = (HttpURLConnection) new URL(DUMMY_URL).openConnection();

новый URL (DUMMY_URL).openConnection() возвращает HttpURLConnection . Этот объект позволяет добавлять заготовки или проверять код ответа.

Далее, давайте получить ВходНая трансляция из подключение объект:

InputStream inputStream = connection.getInputStream();

Наконец, мы должны преобразовать InputStream в строковую .

4. Apache HttpClient

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

Чтобы использовать эту библиотеку, нам нужно добавить ее зависимость к нашему проекту Maven:


    org.apache.httpcomponents
    httpclient
    4.5.12

Мы можем извлечения и отправки данных через БлизкийHttpClient класс . Для создания экземпляра с конфигурацией по умолчанию мы можем использовать HttpClients.createDefault() .

БлизкийHttpClient обеспечивает выполнить способ отправки и получения данных. Этот метод использует параметр типа HttpUriRequest , который имеет много подклассов, включая HttpGet и HttpPost .

Давайте сначала создать HttpGet объект :

HttpGet request = new HttpGet(DUMMY_URL);

Во-вторых, давайте создать клиентскую :

CloseableHttpClient client = HttpClients.createDefault();

В-третьих, извлечение объекта ответа в результате выполнить метод:

CloseableHttpResponse response = client.execute(request);

Наконец, мы возвращаем ответный орган преобразование сущности ответа в Струнные :

HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);

5. Весенний restTemplate

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

РестТемплет класс является важным инструментом, предоставляемым Весна, которая предлагает простой шаблон для того, чтобы сделать клиентские операции HTTP над базовыми библиотеками клиентов HTTP, такими как JDK HttpURLConnection , Апач HttpClient , и другие.

РестТемплет обеспечивает некоторые полезные методы для создания запросов HTTP и обработки ответов.

Мы можем использовать эту библиотеку, сначала добавив некоторые зависимости в наш проект Maven:


    org.springframework.boot
    spring-boot-starter-web
    ${spring-boot.version}


    org.springframework.boot
    spring-boot-starter-test
    ${spring-boot.version}
    test

Чтобы сделать веб-запрос и вернуть тело ответа в качестве строки, давайте сначала создать экземпляр РестТемплет :

RestTemplate restTemplate = new RestTemplate();

Во-вторых, получить объект ответа, позвонив методу getForObject () , прохождение в URL и желаемого типа ответа – мы будем использовать Струна.class в нашем примере:

String response = restTemplate.getForObject(DUMMY_URL, String.class);

6. Заключение

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

Как обычно, полный код доступен более на GitHub .