Учебники

Apache HttpClient — обработчики ответов

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

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

Создание обработчика ответа

HttpClient API предоставляет интерфейс, известный как ResponseHandler, в пакете org.apache.http.client. Чтобы создать обработчик ответа, реализуйте этот интерфейс и переопределите его метод handleResponse () .

Каждый ответ имеет код состояния, и если код состояния находится между 200 и 300, это означает, что действие было успешно получено, понято и принято. Поэтому в нашем примере мы будем обрабатывать сущности ответов с такими кодами состояния.

Выполнение запроса с использованием обработчика ответа

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

Шаг 1 — Создание объекта HttpClient

Метод createDefault () класса HttpClients возвращает объект класса CloseableHttpClient , который является базовой реализацией интерфейса HttpClient . Используя этот метод, создайте объект HttpClient

CloseableHttpClient httpclient = HttpClients.createDefault();

Шаг 2 — Создание обработчика ответа

Создайте объект обработчика ответа, созданный выше, используя следующую строку кода:

ResponseHandler<String> responseHandler = new MyResponseHandler(); 

Шаг 3 — Создание объекта HttpGet

Класс HttpGet представляет HTTP-запрос GET, который извлекает информацию о данном сервере с использованием URI.

Создайте запрос HttpGet, создав экземпляр класса HttpGet и передав строку, представляющую URI, в качестве параметра его конструктору.

ResponseHandler<String> responseHandler = new MyResponseHandler(); 

Шаг 4 — Выполнить запрос Get с помощью обработчика ответа

Класс CloseableHttpClient имеет вариант метода execute (), который принимает два объекта ResponseHandler и HttpUriRequest и возвращает объект ответа.

String httpResponse = httpclient.execute(httpget, responseHandler);

пример

Следующий пример демонстрирует использование обработчиков ответов.

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

class MyResponseHandler implements ResponseHandler<String>{
 
   public String handleResponse(final HttpResponse response) throws IOException{

      //Get the status of the response
      int status = response.getStatusLine().getStatusCode();
      if (status >= 200 && status < 300) {
         HttpEntity entity = response.getEntity();
         if(entity == null) {
            return "";
         } else {
            return EntityUtils.toString(entity);
         }

      } else {
         return ""+status;
      }
   }
}

public class ResponseHandlerExample {
   
   public static void main(String args[]) throws Exception{
 
      //Create an HttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();

      //instantiate the response handler
      ResponseHandler<String> responseHandler = new MyResponseHandler();

      //Create an HttpGet object
      HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");

      //Execute the Get request by passing the response handler object and HttpGet object
      String httpresponse = httpclient.execute(httpget, responseHandler);

      System.out.println(httpresponse);
   }
}

Выход

Вышеуказанные программы генерируют следующий вывод —