我想用httpclient访问一个网站获取数据,但是我发现这个网站每次返回的jessionid和下次请求的jesseionid是不一样的,导致的结果是我用httpclient访问时候网站提示session失效,这是怎么回事呢?
2 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
1. 确定不是每次new了一个httpclient对象?
2. 有些网站模拟登录比较麻烦,比如他需要js生成一些cookie或隐藏域传到server端;这个要具体情况具体分析。你必须要搞清楚到底哪些个cookie, 隐藏域是关键的,甚至header信息也会有影响;并不一定是一个jessesionid就够了。
慕哥9229398
TA贡献1877条经验 获得超6个赞
从例子中可以看出是用的同一个HttpClient(里面维护同一个CookieStore对象),Session所带来的Cookie就可以得以保存;
HttpClient client = new HttpClient();
在HttpClient 源码中维护着一个CookieStore的对象,用用存储Cookies;
这个是本质,当然如果有多个HttpClient时,可以共享CookieStore,这样每个HttpClient访问页面时会带上同样的cookie.
- 2 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消