Agente utente personalizzato in HttpClient 4

1. Panoramica

Questo breve tutorial mostrerà come inviare un'intestazione User-Agent personalizzata utilizzando Apache HttpClient 4 .

2. Impostazione dell'agente utente su HttpClient

2.1. Prima di HttpClient 4.3

Quando si lavora con versioni precedenti di Http Client (pre 4.3), l'impostazione del valore di User-Agent è stata eseguita tramite un'API di basso livello :

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

Lo stesso può essere fatto anche tramite un'API di livello superiore, senza occuparsi della proprietà http.useragent non elaborata :

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

Un esempio completo sarebbe simile a questo:

@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. Dopo HttpClient 4.3

Nella recente versione del client Apache (dopo la 4.3), lo stesso si ottiene in modo molto più pulito, tramite le nuove API fluenti:

@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. Impostazione dell'agente utente su richieste individuali

Una consuetudine User-Agent intestazione può anche essere impostato su singole richieste, non sull'intera 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. Conclusione

Questo articolo ha illustrato come utilizzare HttpClient per inviare richieste con un'intestazione User-Agent personalizzata , ad esempio per simulare il comportamento di un browser specifico.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata nel mio progetto GitHub : questo è un progetto basato su Eclipse, quindi dovrebbe essere facile da importare ed eseguire così com'è.