搞了好些日子了,今天终于找到一直无法成功登陆的原因:
因为httpclient是把每一个cookie单独作为一个header来发送给服务器,而IE浏览器是把所有cookie合并成一个header来发送的。写上下面一句就成功登陆了!
client.getParams().setParameter("http.protocol.single-cookie-header", true);
但紧接着问题来了,当我加上这一句之后,虽然能够登陆成功。但是,却出现了一个warning: 2011-4-7 20:41:00 org.apache.commons.httpclient.HttpMethodBase processCookieHeaders
警告: Cookie rejected: "Pauth=240825038%7Chappytest0%7Cbf9558d0c7b868f7384aa563429b6a8e%7C1302180081%7C10001%7Cc3ac05b6cab8a522f483f7589516c1a9%7C". Illegal domain attribute ".my4399.com". Domain of origin: "my.4399.com" 在网上学习了很久,看到有两个解决办法:
1、加上 DefaultHttpParams.getDefaultParams().setParameter("http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY);
2、加上 postmethod.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
但是尝试过,还是解决不了问题。我用的httpclient是3.1版的。 PS:还有一个问题,虽然能登陆成功了。但是好像不能保持登陆成功的状态。请问怎样才能让它保持已登陆的状态呢? 请各位大虾指教~!不胜感激~!!
解决方案 »
- Jmail使用出现 503错误 求路过大牛指点T T
- 如何才能用tomcat访问webapp目录外的文件
- getParameter是獲取form對象值,還是網址後面的參數啊?
- 小弟有一個jsp的問題請教大家!
- 关于使用Display Tag出现不能分页不能排序的问题
- 跪求像csdn导航栏一样后者相似的菜单源码!!!给分!!
- 【急!】在JAVA中用AXIS调用该WebService方法时,如何获取返回多个结果?
- file="+path+"/"+fname+"\"中的"/"和"\"代表什么意思
- 初学者问题,大家帮忙看看
- 请问用request.getParameter("title")获得参数后如何转成int类型
- 关于javascript报错的问题
- MyEclipse6.5部署工程 求高手!!
哦~~~,我大概能明白您的意思了。
但是,HttpClient不是可以自动模拟浏览器的方式来处理Cookies的吗?那在我后面访问网站的时候不是就自动带上上一次的Cookies信息么?里面不就包括sessionID么?
可能是我嘴拙,没把问题说清,请移步这里:http://topic.csdn.net/u/20110411/00/4a5ab0d3-51a2-4971-8954-f6ddf922ac45.html 这个问题可能问得较为具体些。谢谢大虾的帮忙~!
量(String, boolean)不适用
或者
postmethod.getParams().setParameter("http.protocol.cookie-policy",CookiePolicy.BROWSER_COMPATIBILITY);
都不管用.我看了一下包里面的函数,原因出在 parser.validate(,,,)这个函数中,它里面有一句 if(!host.equals(s)){抛出异常} 它是在一个循环里面的,s 是依次迭代每个cookie的domain ,也就是说它要求每个cookie 的domain 都要和host一直,而我抓包看了一下 一共大概6 ,7 条cookie 的设置,前两个是 .sina.com.cn 后面是 weibo.com
同时我的host 是 由Get中的网址得来的 是weibo.com。 显然前两个cookie不满足它的要求,就抛出警告;另外不知道是不是由于这个警告的原因,我的Get里面ResponseBody的 值也是null(我检查了抓的包明明有内容)。
我看到过一个方法,说是要重新定义自己的CookiePolicy ,然后去register一个, 实现CookieSpec 接口,把里面的Validate 重写,放宽松一点,但是那说的是httpclient 4.X ,3.1的版本好像类结构完全不同,大家能给点建议么?