Apache HttpClient中自定义用户代理
Contents
1. 概述
本快速教程将展示如何使用 Apache HttpClient发送自定义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");
同样可以通过更高级别的 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. HttpClient 4.3 之后
在最新版本的 Apache 客户端(4.3 之后)中,通过新的 fluent 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);
}