我的简单 Apache HttpClient (4.0.1) 客户端应用程序在 main() 方法中向服务器 URL 发出 HttpGet 请求并打印响应。启动时,应用程序在静态块中注册 java.net.CookieHandler 的实现。
在检查服务器端收到的 cookie 时,我发现 HttpClient 发出 GET 请求时服务器没有收到 cookie。
另一方面,当我用普通的 java.net.URL(HTTP_URL).openStream() 替换 Apache HttpClient 时,cookie 由请求上的 CookieHandler 设置并由服务器接收。
是不是 CookieHandler 不能与 Apache HttpClient 一起使用?
代码:
客户端.java
静止的 { CookieHandler.setDefault(new CookieHandler() { 公共地图获取(URI u,列表 r){ 返回 Collections.singletonMap("Cookie", Collections.singletonList(COOKIE_STRING)); } }); }
使用 HttpClient(不按请求放置 cookie)
HttpClient 客户端 = 新 DefaultHttpClient(); HttpGet get = new HttpGet(HTTP_URL); client.execute(get);
使用 java.net.URL(根据请求设置 cookie)
URL url = 新 URL(HTTP_URL); InputStream 是 = url.openStream();