免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8173 | 回复: 3
打印 上一主题 下一主题

求教:httpclien中的RedirectException: Maximum redirects (50) exceeded [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-17 16:45 |只看该作者 |倒序浏览
我遇到了下面的异常  RedirectException: Maximum redirects (50) exceeded using HttpClient 4.3 on solaris10.

org.apache.http.client.ClientProtocolException
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:18
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:214)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:136)
        at bing.comSpider.doGetFrombing.com(bing.comSpider.java:141)
        at bing.comSpider.executeThread(bing.comSpider.java:315)
        at Calculator.compute(Calculator.java:24)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:377)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:654)
        at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:685)
        at Calculator.compute(Calculator.java:31)
        at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:177)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:334)
        at java.util.concurrent.ForkJoinWorkerThread.execTask(ForkJoinWorkerThread.java:604)
        at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:762)
        at java.util.concurrent.ForkJoinPool.work(ForkJoinPool.java:646)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:39
Caused by: org.apache.http.client.RedirectException: Maximum redirects (50) exceeded
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:115)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
        ... 58 more
        
下面是我的代码
                        RequestConfig configIdentified = RequestConfig.custom()
                                        .setSocketTimeout(12000).setConnectTimeout(12000)
                                        .setConnectionRequestTimeout(12000)
                                        .setStaleConnectionCheckEnabled(true)
                                        .setCircularRedirectsAllowed(true).build();
                       
136                        HttpGet httpget1 = new HttpGet("www.aaa.bbb.com/abc/cde";
137                        HttpGet httpget2 = new HttpGet(this.getDetailPathUrl(pagenum));
138                        try
139                        {
140                                httpget1.setConfig(configIdentified);
141                                httpclient.execute(httpget1, responseHandler);

我想知道如何避免 RedirectException: Maximum redirects (50) exceeded

先谢谢大家。

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
2 [报告]
发表于 2014-03-18 08:59 |只看该作者
限制重定向次数

论坛徽章:
0
3 [报告]
发表于 2014-03-18 09:22 |只看该作者
本帖最后由 panghaoyu 于 2014-03-18 09:22 编辑

非常感谢 bikong0411 的指点。

我的服务器连接网络,每次都要经过一个计费网管,所以setCircularRedirectsAllowed必须保留

当然会发生多次重定向,

很奇怪的是,程序在winxp上开发运行没有问题,移植到solars10 上后就报错了

请各位多指点

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
4 [报告]
发表于 2014-03-25 09:38 |只看该作者
其实你可以手动处理下重定向,把重定向的URI打印出来,一般的重定向都不会超过10的,否则就可能进入了死循环
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP