HttpClient 4のカスタムユーザーエージェント

HttpClient 4のカスタムユーザーエージェント

1. 概要

このクイックチュートリアルでは、how to send a custom User-Agent header using Apache HttpClient 4を示します。

2. HttpClientUser-Agentを設定する

2.1. HttpClient4.3より前

古いバージョンのHttpクライアント(4.3より前)を使用する場合、User-Agentの値の設定はvia a low level APIで行われました。

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 Firefox/26.0");

生のhttp.useragentプロパティを処理せずに、a higher level API as wellを介して同じことを行うことができます。

HttpProtocolParams.setUserAgent(client.getParams(), "Mozilla/5.0 Firefox/26.0");

完全な例は次のようになります。

@Test
public void whenClientUsesCustomUserAgent_thenCorrect()
  throws ClientProtocolException, IOException {
    DefaultHttpClient client = new DefaultHttpClient();
    HttpProtocolParams.setUserAgent(client.getParams(), "Mozilla/5.0 Firefox/26.0");

    HttpGet request = new HttpGet("http://www.github.com");
    client.execute(request);
}

2.2. HttpClient4.3以降

Apacheクライアントの最近のバージョン(4.3以降)では、新しい流APIなAPIを介して、同じことがよりきれいな方法で実現されます。

@Test
public void whenRequestHasCustomUserAgent_thenCorrect()
  throws ClientProtocolException, IOException {
    HttpClient instance = HttpClients.custom().setUserAgent("Mozilla/5.0 Firefox/26.0").build();
    instance.execute(new HttpGet("http://www.github.com"));
}

3. 個々のリクエストにUser-Agentを設定する

カスタムUser-Agentヘッダーは、HttpClient全体ではなく、個々のリクエストに設定することもできます。

@Test
public void givenDeprecatedApi_whenRequestHasCustomUserAgent_thenCorrect()
  throws ClientProtocolException, IOException {
    HttpClient instance = HttpClients.custom().build();
    HttpGet request = new HttpGet(SAMPLE_URL);
    request.setHeader(HttpHeaders.USER_AGENT, "Mozilla/5.0 Firefox/26.0");
    instance.execute(request);
}

4. 結論

この記事では、たとえば特定のブラウザの動作をシミュレートするために、use the HttpClient to send requests with custom User-Agent headerを実行する方法について説明しました。

これらすべての例とコードスニペットcan be found in my github projectの実装–これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。