Apache HttpClient是否将java.net.CookieHandler设置的cookie添加到请求中?

Apache HttpClient是否将java.net.CookieHandler设置的cookie添加到请求中?,java,cookies,apache-httpclient-4.x,apache-httpcomponents,Java,Cookies,Apache Httpclient 4.x,Apache Httpcomponents,我的简单Apache HttpClient(4.0.1)客户端应用程序在main()方法中向服务器URL发出HttpGet请求,并打印响应。启动时,应用程序在静态块中注册java.net.CookieHandler的实现 在检查服务器端收到的cookies时,我发现当HttpClient发出GET请求时,服务器没有收到cookies 另一方面,当我用一个普通的java.net.URL(HTTP_URL).openStream()替换Apache HttpClient时,Cookie由Cookie

我的简单Apache HttpClient(4.0.1)客户端应用程序在main()方法中向服务器URL发出HttpGet请求,并打印响应。启动时,应用程序在静态块中注册java.net.CookieHandler的实现

在检查服务器端收到的cookies时,我发现当HttpClient发出GET请求时,服务器没有收到cookies

另一方面,当我用一个普通的java.net.URL(HTTP_URL).openStream()替换Apache HttpClient时,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)); } }); } 静止的{ setDefault(新的CookieHandler(){ 公共映射获取(URI u,列表r){ 返回Collections.singletonMap(“Cookie”, Collections.singletonList(COOKIE_字符串)); } }); } 使用HttpClient(不会根据请求放置cookie)

HttpClient=new DefaultHttpClient(); HttpGet=newhttpget(HTTP_URL); client.execute(get); 使用java.net.URL(根据请求设置cookies)

URL=新的URL(HTTP\U URL); InputStream=url.openStream(); CookieHandler是否不适用于Apache HttpClient

这是正确的

ApacheHttpClient代码库使用自己的cookie和cookie存储表示/机制。这里是一个链接到的相关章节。(这相当粗略,但是如果您查看相关类的javadocs,您应该能够了解如何使用它。)

(如果您使用的是较旧版本的Apache HttpClient,请注意API已经发生了显著变化。)

HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(HTTP_URL); client.execute(get); URL url = new URL(HTTP_URL); InputStream is = url.openStream();