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.