User-Agent personnalisé dans HttpClient 4

1. Vue d'ensemble

Ce tutoriel rapide montrera comment envoyer un en - tête User-Agent personnalisé à l' aide d'Apache HttpClient 4 .

2. Configuration de User-Agent sur HttpClient

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 de User-Agent a été effectuée via une API de bas niveau :

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

La même chose peut être faite via une API de niveau supérieur - sans traiter la propriété http.useragent brute :

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("//www.github.com"); client.execute(request); }

2.2. Après HttpClient 4.3

Dans la version récente du client Apache (après 4.3), la même chose est obtenue de manière beaucoup plus propre, via les nouvelles 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("//www.github.com")); }

3. Configuration de User-Agent sur des demandes individuelles

Un en - tête User-Agent personnalisé peut également être défini sur des demandes individuelles, pas sur l'ensemble du 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. Conclusion

Cet article a illustré comment utiliser HttpClient pour envoyer des demandes avec un en - tête User-Agent personnalisé , par exemple pour simuler le comportement d'un navigateur spécifique.

L'implémentation de tous ces exemples et extraits de code peut être trouvée dans mon projet github - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.