Мое простое клиентское приложение Apache HttpClient (4.0.1) делает запрос HttpGet на URL-адрес сервера в методе main () и печатает ответ.При запуске приложение регистрирует реализацию java.net.CookieHandler в статическом блоке.
При проверке файлов cookie, полученных на стороне сервера, я обнаружил, что файлы cookie не принимаются Сервером, когда HttpClientделает запрос GET.
С другой стороны, когда я заменил Apache HttpClient на простой java.net.URL (HTTP_URL) .openStream (), файлы cookie были установлены CookieHandler по запросу и были получены сервером.
Это то, что CookieHandler не работает с Apache HttpClient?
Код:
Client.java
static {
CookieHandler.setDefault(new CookieHandler() {
public Map get(URI u, List r) {
return Collections.singletonMap("Cookie",
Collections.singletonList(COOKIE_STRING));
}
});
}
Использование HttpClient (файлы cookie по запросу не помещаются)
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(HTTP_URL);
client.execute(get);
Использование java.net.URL (устанавливает файлы cookie по запросу)
URL url = new URL(HTTP_URL);
InputStream is = url.openStream();