Перейти к основному содержимому

Пользовательский агент пользователя в Apache HttpClient

· 2 мин. чтения

1. Обзор

В этом кратком руководстве показано, как отправить собственный заголовок User-Agent с помощью Apache HttpClient .

2. Настройка User-Agent на HttpClient

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) то же самое достигается гораздо более чистым способом с помощью новых API-интерфейсов Fluent:

@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, поэтому его легко импортировать и запускать как есть.