【发布时间】:2013-08-17 01:52:56
【问题描述】:
我正在使用新的 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);
}
我是不是做错了什么?
【问题讨论】:
标签: httpclient httprequest httpsession