求教:httpclien中的RedirectException: Maximum redirects (50) exceeded
我遇到了下面的异常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:188)
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:398)
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
先谢谢大家。
限制重定向次数 本帖最后由 panghaoyu 于 2014-03-18 09:22 编辑
非常感谢 bikong0411 的指点。
我的服务器连接网络,每次都要经过一个计费网管,所以setCircularRedirectsAllowed必须保留
当然会发生多次重定向,
很奇怪的是,程序在winxp上开发运行没有问题,移植到solars10 上后就报错了
请各位多指点 其实你可以手动处理下重定向,把重定向的URI打印出来,一般的重定向都不会超过10的,否则就可能进入了死循环
页:
[1]