Agente de usuário personalizado no HttpClient 4

Agente de usuário personalizado no HttpClient 4

1. Visão geral

Este tutorial rápido mostraráhow to send a custom User-Agent header using Apache HttpClient 4.

2. ConfigurandoUser-Agent emHttpClient

2.1. Antes do HttpClient 4.3

Ao trabalhar com versões mais antigas do Http Client (pré 4.3), a configuração do valor deUser-Agent foi feitavia a low level API:

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

O mesmo pode ser feito viaa higher level API as well - sem lidar com a propriedadehttp.useragent bruta:

HttpProtocolParams.setUserAgent(client.getParams(), "Mozilla/5.0 Firefox/26.0");

Um exemplo completo seria assim:

@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. Após HttpClient 4.3

Na versão recente do cliente Apache (após 4.3), o mesmo é alcançado de uma maneira muito mais limpa, por meio das novas APIs fluentes:

@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. DefinindoUser-Agent em solicitações individuais

Um cabeçalhoUser-Agent personalizado também pode ser definido em solicitações individuais, não em todo oHttpClient:

@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. Conclusão

Este artigo ilustrou como você podeuse the HttpClient to send requests with custom User-Agent header - por exemplo, para simular o comportamento de um navegador específico.

A implementação de todos esses exemplos e fragmentos de códigocan be found in my github project - este é um projeto baseado no Eclipse, portanto, deve ser fácil de importar e executar como está.