Автор оригинала: Eugen Paraschiv.
1. Обзор
Этот краткий учебник покажет , как отправить пользовательский Агент пользователя заголовок с помощью Apache HttpClient 4 .
2. Настройка агента пользователя на HttpClient
2.1. Перед HttpClient 4.3
При работе со старыми версиями HttpClient (до версии 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 также может быть установлен для отдельных запросов, а не для всего 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 для отправки запросов с пользовательским Агентом пользователя заголовком -например, для моделирования поведения конкретного браузера.
Реализацию всех этих примеров и фрагментов кода можно найти в моем проекте github – это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.