httpclient redirect 记录

最近在使用httpclient 3.0抓取一些简单的数据。在httpclient访问网站时,总是出现 circular redirect to的异常,在不知疲倦的degoogle后发现以下:
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
也就是允许循环重定向了,但是异常依旧,报错
 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders
警告: Cookie rejected: "$Version=0; $Version=0; $Path=/". Cookie name may not start with $(其实这是一个很重要的提醒,被我忽略了,我依然认为是重定向的问题)
然后继续 
method.setFollowRedirects(false); 关闭自动重定向,手动处理
  int statuscode = method.getStatusCode();
      if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) ||
           (statuscode == HttpStatus.SC_MOVED_PERMANENTLY) ||
           (statuscode == HttpStatus.SC_SEE_OTHER) ||
(statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)) {
//读取新的URL地址
           Header header = method.getResponseHeader("location");
           if (header != null) {
               String newuri = header.getValue();
               if ((newuri == null) || (newuri.equals("")))
                   newuri = "/";
然后发现statuscode一直是 302,location一直指向本页。但是把地址输入浏览器,一直是200,而且是没有重定向的。仔细查看 request header 发现Cookie,于是直接把cookie复制下 加到header中,问题终于解决。
我想是因为服务器会检测cookie,如果没检测到,就会重定向到本页,尤其是有登录的页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值