Я использую новый Apache HttpClient 4.2 (не от Apache Commons).
Мне нужно открыть один HttpClient и сделать несколько запросов на один и тот же сервер. Судя по документации, httpClient должен автоматически поддерживать файл cookie и, следовательно, несколько запросов попадать в один и тот же сеанс. Однако на стороне сервера я отлаживаю и вижу, что
HttpSession session = req.getHttpSession(true);
каждый раз возвращает новый объект HttpSession.
мой клиентский код такой.
// первый раз
HttpClient httpClient = new DefaultHttpClient();
req.getSession(true).setAttribute(HTTPCLIENT, httpClient);
HttpGet httpget = new HttpGet(redirectUrl);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String content = httpClient.execute(httpget, responseHandler);
// subsequent calls
HttpClient httpClient = getHttpClient(req);
HttpGet httpget = new HttpGet(redirectUrl);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String content = httpClient.execute(httpget, responseHandler);
// supported by the private method
private HttpClient getHttpClient(HttpServletRequest req){
return (HttpClient) req.getSession(true).getAttribute(HTTPCLIENT);
}
я сделал что-то не так?