Cookie又见Cookie-使用HtmlUnit/HttpClient中遇到的问题
2007-09-10 16:52
309 查看
想试试HtmlUnit在测试网页上的表现,访问一个网页跳转到下一个网页之后,总是返回在server上找不到的页面,用IE访问就是好的。 另外有个奇怪的现象,在IE访问网页之后,再run写好的HtmlUnit代码就能顺利通过。关了IE之后,10分钟左右,代码都能通过。超过这个时间之后,就怎么折腾也通不过。
根据这个现象分析,感觉很象是cookie在捣鬼。cookie有效的时候,HtmlUnit代码就能用IE产生的cookie发送请求,cookie失效之后,server端对cookie验证不通过,自然指向错误提示的页面。
接下来在HtmlUnit的老巢里一通搜索,能找到的信息是在可怜。开源的东西,一个最大的短处就是文档很不完善。不过这也是人家可以赚钱的地方,什么东西都公布出来整理成文档了,哪一天商业化了,咨询费一分钱都收不到了。
最终还是通过google搜到了HtmlUnit的wiki,它的站点还是有不少有用的信息,其中有一个帖子,题目是Single Cookie Header,内容如下:
Some web sites, especially those driven by Microsoft products (in my experience), require that cookies be sent from the web browser back to the server using a single Cookie: http header. The default behavior of HtmlUnit, which uses
![](http://blog.csdn.net/phpwiki/themes/default/images/http.png)
commons-httpclient, is to send multiple Cookie: headers, one for each cookie. See
![](http://blog.csdn.net/phpwiki/themes/default/images/https.png)
Bug 1117500 for details.
意思是说,有些站点(大多数是使用微软产品的)要求cookie从浏览器端发送到server时,要使用单一cookie。而HtmlUnit用的HttpClient却是多个cookie。用一句
这样说来,即使发送的内容一样,但因为不是一次发送完成,服务期端就会认为cookie的内容不正确。这个我在用HttpClient做工具的时候已经遇到过一次。花了2天时间,仔细研究真实浏览器和这个假浏览器之间到底有什么差异。时间长了都要忘记了,这次又遇到这样的问题,还是记下来的好,免得以后又要忘记。
HtmlUnit这样的好工具要是被这样的问题绊住而放弃真是太不值了。
根据这个现象分析,感觉很象是cookie在捣鬼。cookie有效的时候,HtmlUnit代码就能用IE产生的cookie发送请求,cookie失效之后,server端对cookie验证不通过,自然指向错误提示的页面。
接下来在HtmlUnit的老巢里一通搜索,能找到的信息是在可怜。开源的东西,一个最大的短处就是文档很不完善。不过这也是人家可以赚钱的地方,什么东西都公布出来整理成文档了,哪一天商业化了,咨询费一分钱都收不到了。
最终还是通过google搜到了HtmlUnit的wiki,它的站点还是有不少有用的信息,其中有一个帖子,题目是Single Cookie Header,内容如下:
Some web sites, especially those driven by Microsoft products (in my experience), require that cookies be sent from the web browser back to the server using a single Cookie: http header. The default behavior of HtmlUnit, which uses
![](http://blog.csdn.net/phpwiki/themes/default/images/http.png)
commons-httpclient, is to send multiple Cookie: headers, one for each cookie. See
![](http://blog.csdn.net/phpwiki/themes/default/images/https.png)
Bug 1117500 for details.
意思是说,有些站点(大多数是使用微软产品的)要求cookie从浏览器端发送到server时,要使用单一cookie。而HtmlUnit用的HttpClient却是多个cookie。用一句
System.setProperty("apache.commons.httpclient.cookiespec", CookiePolicy.BROWSER_COMPATIBILITY); 或者DefaultHttpParams.getDefaultParams().setBooleanParameter(HttpMethodParams.SINGLE_COOKIE_HEADER, true); (我用的是后面这个) 就可以解决问题了。
这样说来,即使发送的内容一样,但因为不是一次发送完成,服务期端就会认为cookie的内容不正确。这个我在用HttpClient做工具的时候已经遇到过一次。花了2天时间,仔细研究真实浏览器和这个假浏览器之间到底有什么差异。时间长了都要忘记了,这次又遇到这样的问题,还是记下来的好,免得以后又要忘记。
HtmlUnit这样的好工具要是被这样的问题绊住而放弃真是太不值了。
相关文章推荐
- Cookie-使用HtmlUnit/HttpClient中遇到的问题
- 关于 cookie 使用中遇到的问题
- 使用HttpClient同步WebView时的cookie第一次加载不工作的问题的解决
- 面试时候遇到的一个问题:禁用cookie后还能使用session吗?
- 使用Cookie遇到的问题?
- 使用Jquery.cookie.js遇到的一些问题
- 使用HttpClient的post提交数据遇到的问题
- 使用httpClient访问指定网址遇到的问题
- 使用HttpURLConnection做代理时遇到的cookie放不进去的问题
- cookie使用中遇到的问题
- javaWeb开发之MySQL和Cookie的使用练习中遇到的一些问题及解决
- RecyclerView使用xRefreshView时遇到的问题
- 个人项目Fragment使用经验及遇到的问题
- Git 使用过程中遇到的问题以及解决办法
- android studio使用过程中遇到的问题(笔记)
- Android使用DOM来编辑XML时遇到的问题——无法保存
- angularjs在ng-repeat中使用ng-model遇到的问题
- 使用openstack E版遇到的问题
- 在Mac中使用git遇到的问题
- 使用 comment-net-ftp-3.5.jar 实现FTPClient时遇到的listFiles()返回空的问题小结