1概要

このクイックチュートリアルでは、Apache HttpClient 4を使用してカスタムの

User-Agent

ヘッダーを送信する方法を説明します。

** 2

HttpClient



User-Agent

を設定する

**


2.1. HttpClient 4.3より前

古いバージョンのHttp Client(4.3以前)を使って作業していたとき、

User-Agent

の値の設定は、低レベルのAPIを介して行われました。

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

生の

http.useragent

プロパティを処理せずに、

より高いレベルのAPI

でも同じことができます。

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. HttpClient 4.3以降

最近のバージョンのApacheクライアント(4.3以降)では、新しい流れるような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結論

この記事では、HttpClientを使用して** カスタム

User-Agent

ヘッダーを使用して要求を送信する方法 – 具体的なブラウザの動作をシミュレートする方法などを説明しました。

これらすべての例とコードスニペットの実装はhttps://github.com/eugenp/tutorials/tree/master/httpclient#readme[my githubプロジェクト]にあります。そのままインポートして実行するのは簡単です。