ApacheHttpClientのカスタムユーザーエージェント
1. 概要
このクイックチュートリアルでは、 ApacheHttpClientを使用してカスタムUser-Agentヘッダーを送信する方法を示します。
2. HttpClientでUser-Agentを設定する
2.1. HttpClient4.3より前
古いバージョンのHttpクライアント(4.3より前)を使用する場合、 User-Agent の値の設定は、低レベルAPIを介して行われました。
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 Firefox/26.0");
同じことは、より高いレベルのAPI を介して、生のhttp.useragentプロパティを処理せずに行うことができます。
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を介して、同じことがはるかにクリーンな方法で実現されています。
@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ヘッダーを使用してリクエストを送信する方法(たとえば、特定のブラウザーの動作をシミュレートする方法)について説明しました。
これらすべての例とコードスニペットの実装は、私のgithubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。