hit*_*tan 45 java cookies post apache-httpclient-4.x
你能告诉我如何在cookie中存储jsessionid,所以它可以通过post请求传递给servlet吗?我正在使用Apache HttpClient版本4.0.3.我发现的所有解决方案都解释了如何使用HttpClient 3.1执行此操作.我已经阅读了教程并试过这个,但它无法正常工作.
HttpPost httppost = new HttpPost(postData);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
Run Code Online (Sandbox Code Playgroud)
编辑 - 进一步的解释
我正在连接到朋友写的servlet.我已登录并获得jsessionid
.现在我想发送另一个请求,需要传递jsessionid用于授权目的.Servlet运行正常,因为我使用了Java HttpURLConnection,设置了cookie,传递了它并且它起作用了.现在使用HttpClient我没有异常但是来自friend的servlet的返回代码表明请求中没有sessionid.
另一个编辑 - 我有一个解决方案
我设置了请求标头的参数,它工作.Servlet识别的sessionid.
httppost.setHeader("Cookie", "JSESSIONID="+ getSessionId());
现在我的问题是:这种方法是否正确?
小智 41
我很高兴解决这个问题:
HttpPost httppost = new HttpPost(postData);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
//cookie.setDomain("your domain");
cookie.setPath("/");
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
Run Code Online (Sandbox Code Playgroud)
太简单!
小智 22
我是通过将cookie传递给HttpContext来完成的:
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
response = client.execute(httppost, localContext);
Run Code Online (Sandbox Code Playgroud)
lil*_*iya 11
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
response = client.execute(httppost, localContext);
Run Code Online (Sandbox Code Playgroud)
不适用于4.5版本
cookie.setDomain(".domain.com");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95153 次 |
最近记录: |