1概要

このクックブックは、

Apache HttpClient 4の使い方

をさまざまな例や使用例で示しています。

焦点は

HttpClient 4.3.x以降

にあるため、例のいくつかは古いバージョンのAPIでは機能しない可能性があります。

クックブックのフォーマットは、例に焦点を当てた実用的なものです – 余分な詳細や説明は必要ありません。

もっと深く掘り下げて、HttpClientを使ってできることを他にも学びたい場合は、


HttpClientのメインチュートリアル


に進んでください。


2クックブック

  • **

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

  • **

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

  • **

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

  • **

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

  • **

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

@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);
}

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

  • **

instance.execute(new HttpPost(SAMPLE__URL));

  • **

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

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

  • **

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

  • **

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

  • **

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 HttpClientに深く入り込む

HttpClientライブラリは、正しく使用すれば非常に強力なツールです – クライアントが何をすることができるかを調べ始める** 場合は、チュートリアルをいくつかチェックしてください。


4結論

このフォーマットは、私が通常私の記事を構成する方法とは少し異なります –

私はあるトピックについて

私の内部開発クックブックのいくつかを発行しています** 配列[Hamcrest]and

Mockito

– そして今HttpClient。目標は、この情報をオンラインですぐに利用できるようにすること、そして私が新しい有用な例に出くわすたびにそれに追加することです。

これらすべての例とコードスニペットの実装は、https://github.com/eugenp/tutorials/tree/master/httpclient#readme[over on GitHub]** にあります。

これはMavenベースのプロジェクトなので、そのままインポートして実行するのは簡単なはずです。