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á.