猿问

为什么jessionid每次访问都不一样?

我想用httpclient访问一个网站获取数据,但是我发现这个网站每次返回的jessionid和下次请求的jesseionid是不一样的,导致的结果是我用httpclient访问时候网站提示session失效,这是怎么回事呢?

慕田峪4524236
浏览 88回答 2
2回答

斯蒂芬大帝

1. 确定不是每次new了一个httpclient对象?2. 有些网站模拟登录比较麻烦,比如他需要js生成一些cookie或隐藏域传到server端;这个要具体情况具体分析。你必须要搞清楚到底哪些个cookie, 隐藏域是关键的,甚至header信息也会有影响;并不一定是一个jessesionid就够了。

慕哥9229398

从例子中可以看出是用的同一个HttpClient(里面维护同一个CookieStore对象),Session所带来的Cookie就可以得以保存;HttpClient client = new HttpClient();在HttpClient 源码中维护着一个CookieStore的对象,用用存储Cookies;这个是本质,当然如果有多个HttpClient时,可以共享CookieStore,这样每个HttpClient访问页面时会带上同样的cookie.
随时随地看视频慕课网APP
我要回答