Agent utilisateur personnalisé dans HttpClient 4

Agent utilisateur personnalisé dans HttpClient 4

1. Vue d'ensemble

Ce tutoriel rapide montrerahow to send a custom User-Agent header using Apache HttpClient 4.

2. Réglage deUser-Agent sur leHttpClient

2.1. Avant HttpClient 4.3

Lorsque vous travaillez avec des versions plus anciennes de Http Client (avant 4.3), la définition de la valeur deUser-Agent a été effectuéevia a low level API:

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

La même chose peut être faite viaa higher level API as well - sans traiter la propriété brutehttp.useragent:

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

Un exemple complet ressemblerait à ceci:

@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. Après HttpClient 4.3

Dans la version récente du client Apache (après la version 4.3), le même résultat est obtenu de manière beaucoup plus propre, via les nouvelles API fluides:

@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. Définition deUser-Agent sur des demandes individuelles

Un en-têteUser-Agent personnalisé peut également être défini sur des requêtes individuelles, pas sur l'ensemble desHttpClient:

@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. Conclusion

Cet article a illustré comment vous pouvezuse the HttpClient to send requests with custom User-Agent header - par exemple pour simuler le comportement d'un navigateur spécifique.

L'implémentation de tous ces exemples et extraits de codecan be found in my github project - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.