Livro de receitas do HttpClient 4

Livro de receitas do HttpClient 4

1. Visão geral

Este livro de receitas mostrahow to use the Apache HttpClient 4 em uma variedade de exemplos e casos de uso.

O foco está emHttpClient 4.3.x and above, portanto, alguns dos exemplos podem não funcionar com as versões anteriores da API.

O formato do livro de receitas é um exemplo focado e prático - sem detalhes e explicações estranhas.

Se você quiser se aprofundar e aprender outras coisas legais que você pode fazer com o HttpClient - vá parathe main HttpClient tutorial.

2. Livro de receitas

crie o cliente http

CloseableHttpClient client = HttpClientBuilder.create().build();

enviar solicitação GET básica

instance.execute(new HttpGet("http://www.google.com"));

obter o código de status da resposta HTTP

CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com"));
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));

obter o tipo de mídia da resposta

CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com"));
String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();
assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));

pegue o corpo da resposta

CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com"));
String bodyAsString = EntityUtils.toString(response.getEntity());
assertThat(bodyAsString, notNullValue());

configurar o tempo limite em uma solicitação

@Test(expected = SocketTimeoutException.class)
public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException()
    throws ClientProtocolException, IOException {
    RequestConfig requestConfig = RequestConfig.custom()
      .setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build();
    HttpGet request = new HttpGet(SAMPLE_URL);
    request.setConfig(requestConfig);
    instance.execute(request);
}

configurar o tempo limite em todo o cliente

RequestConfig requestConfig = RequestConfig.custom().
    setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build();
HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);

enviar uma solicitação POST

instance.execute(new HttpPost(SAMPLE_URL));

adicionar parâmetros a um pedido

List params = new ArrayList();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key2", "value2"));
request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));

configurar como o redirecionamento é tratado para uma solicitação HTTP

CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build();
CloseableHttpResponse response = instance.execute(new HttpGet("http://t.co/I5YYd9tddw"));
assertThat(response.getStatusLine().getStatusCode(), equalTo(301));

configurar os cabeçalhos para uma solicitação

HttpGet request = new HttpGet(SAMPLE_URL);
request.addHeader(HttpHeaders.ACCEPT, "application/xml");
response = instance.execute(request);

obter os cabeçalhos da resposta

CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));
Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);
assertThat(headers, not(emptyArray()));

close/release resources

response = instance.execute(new HttpGet(SAMPLE_URL));
try {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        InputStream instream = entity.getContent();
        instream.close();
    }
} finally {
    response.close();
}

3. Vá fundo no HttpClient

A biblioteca HttpClient é uma ferramenta bastante poderosa se usada corretamente - se você deseja iniciarexploring what the client can do - verifique alguns dos tutoriais:

Você também podedig a lot deeper into the HttpClient explorandothe entire series.

4. Conclusão

Este formato é um pouco diferente de como eu costumo estruturar meus artigos -I’m publishing some of my internal development cookbooks sobre um determinado tópico - emGoogle Guava,HamcresteMockito - e agora HttpClient. O objetivo é ter essas informações prontamente disponíveis on-line - e adicioná-las sempre que encontrar um novo exemplo útil.

A implementação de todos esses exemplos e trechos de códigocan be found in over on GitHub.

Este é um projeto baseado em Maven, portanto, deve ser fácil importar e executar como está.