HttpClient 4クックブック
1. 概要
このクックブックには、さまざまな例とユースケースでhow to use the Apache HttpClient 4が示されています。
焦点はHttpClient 4.3.x and aboveにあるため、一部の例は古いバージョンのAPIでは機能しない可能性があります。
クックブックの形式は、例に焦点を当てた実用的であり、余分な詳細や説明は不要です。
深く掘り下げて、HttpClientでできる他のクールなことを学びたい場合は、the main HttpClient tutorialに進んでください。
2. クックブック
httpクライアントを作成する
CloseableHttpClient client = HttpClientBuilder.create().build();
基本的なGETリクエストを送信します
instance.execute(new HttpGet("http://www.google.com"));
HTTP応答のステータスコードを取得します
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);
POSTリクエストを送信する
instance.execute(new HttpPost(SAMPLE_URL));
リクエストにパラメータを追加する
List params = new ArrayList();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key2", "value2"));
request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
HTTPリクエストのリダイレクトの処理方法を構成します
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()));
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. HttpClientに深く入ります
HttpClientライブラリは、正しく使用すれば非常に強力なツールです–exploring what the client can doを開始したい場合–いくつかのチュートリアルをチェックしてください:
the entire seriesを探索して、dig a lot deeper into the HttpClientを実行することもできます。
4. 結論
この形式は、通常の記事の構造(特定のトピックのI’m publishing some of my internal development cookbooks)、Google Guava、Hamcrest、Mockito)、そして現在はHttpClientとは少し異なります。 目標は、この情報をオンラインですぐに利用できるようにし、新しい有用な例を実行するたびに追加することです。
これらすべての例とコードスニペットcan be found in over on GitHubの実装。
これはMavenベースのプロジェクトであるため、インポートしてそのまま実行するのは簡単です。