Benutzerdefinierter Benutzeragent in HttpClient 4

Benutzerdefinierter User-Agent in HttpClient 4

1. Überblick

Dieses kurze Tutorial zeigthow to send a custom User-Agent header using Apache HttpClient 4.

2. Einstellen vonUser-Agent aufHttpClient

2.1. Vor HttpClient 4.3

Bei der Arbeit mit älteren Versionen des HTTP-Clients (vor 4.3) wurde der Wert vonUser-Agentvia a low level API festgelegt:

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

Das gleiche kann übera higher level API as well erfolgen - ohne die Eigenschaft von rawhttp.useragent zu behandeln:

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

Ein vollständiges Beispiel würde so aussehen:

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

In der aktuellen Version des Apache-Clients (nach 4.3) wird dasselbe auf eine viel sauberere Weise über die neuen fließenden APIs erreicht:

@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. Festlegen vonUser-Agent für einzelne Anforderungen

Ein benutzerdefinierterUser-Agent-Header kann auch für einzelne Anforderungen festgelegt werden, nicht für die gesamtenHttpClient:

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

Dieser Artikel hat gezeigt, wie Sieuse the HttpClient to send requests with custom User-Agent header können - zum Beispiel um das Verhalten eines bestimmten Browsers zu simulieren.

Die Implementierung all dieser Beispiele und Codefragmentecan be found in my github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.