Aangepaste user-agent in HttpClient 4

1. Overzicht

Deze korte tutorial zal laten zien hoe u een aangepast User-Agent header met behulp van Apache HttpClient 4.

2. Instelling User-Agent op de HttpClient

2.1. Voordat HttpClient 4.3

Als u met oudere versies van Http Client (vóór 4.3) werkt, stelt u de waarde van het User-Agent werd gedaan via een low-level API:

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

Hetzelfde kan worden gedaan via ook een API op een hoger niveau - zonder om te gaan met het rauwe http.useragent eigendom:

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

Een volledig voorbeeld zou er als volgt uitzien:

@ Test openbare leegte whenClientUsesCustomUserAgent_thenCorrect () gooit ClientProtocolException, IOException {DefaultHttpClient client = nieuwe DefaultHttpClient (); HttpProtocolParams.setUserAgent (client.getParams (), "Mozilla / 5.0 Firefox / 26.0"); HttpGet request = nieuwe HttpGet ("// www.github.com"); client.execute (verzoek); }

2.2. Na HttpClient 4.3

In de recente versie van de Apache-client (na 4.3) wordt hetzelfde bereikt op een veel schonere manier, via de nieuwe vloeiende API's:

@Test public void whenRequestHasCustomUserAgent_thenCorrect () gooit ClientProtocolException, IOException {HttpClient instance = HttpClients.custom (). SetUserAgent ("Mozilla / 5.0 Firefox / 26.0"). Build (); instance.execute (nieuwe HttpGet ("// www.github.com")); }

3. Instelling User-Agent op individuele verzoeken

Een gewoonte User-Agent header kan ook worden ingesteld op individuele verzoeken, niet op het geheel HttpClient:

@Test openbare leegte gegevenDeprecatedApi_whenRequestHasCustomUserAgent_thenCorrect () gooit ClientProtocolException, IOException {HttpClient instantie = HttpClients.custom (). Build (); HttpGet request = nieuwe HttpGet (SAMPLE_URL); request.setHeader (HttpHeaders.USER_AGENT, "Mozilla / 5.0 Firefox / 26.0"); instance.execute (verzoek); }

4. Conclusie

Dit artikel illustreert hoe u dat kunt gebruik de HttpClient om verzoeken met custom User-Agent koptekst - bijvoorbeeld om het gedrag van een specifieke browser te simuleren.

De implementatie van al deze voorbeelden en codefragmenten is te vinden in mijn github-project - dit is een op Eclipse gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.