Meine einfache Apache HttpClient (4.0.1) Client-Anwendung stellt eine HttpGet-Anforderung an eine Server-URL in der main()-Methode und gibt die Antwort. Beim Starten registriert die Anwendung eine Implementierung von java.net.CookieHandler in einem statischen Block.
Bei der Überprüfung der Cookies, die auf der Serverseite empfangen werden, habe ich festgestellt, dass die Cookies nicht vom Server empfangen werden, wenn der HttpClient die GET-Anforderung stellt.
Wenn ich jedoch den Apache HttpClient durch eine einfache java.net.URL(HTTP_URL).openStream() ersetzte, wurden die Cookies durch den CookieHandler auf der Anfrage gesetzt und vom Server empfangen.
Ist es, dass CookieHandler nicht mit Apache HttpClient funktioniert?
Code:
Kunde.java
static {
CookieHandler.setDefault(new CookieHandler() {
public Map get(URI u, List r) {
return Collections.singletonMap("Cookie",
Collections.singletonList(COOKIE\_STRING));
}
});
}
HttpClient verwenden (setzt keine Cookies auf Anfrage)
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(HTTP\_URL);
client.execute(get);
Verwendung von java.net.URL (setzt die Cookies auf Anfrage)
URL url = new URL(HTTP\_URL);
InputStream is = url.openStream();