org.apache.http.client.CircularRedirectException: Circular redirect to "http://xxx"问题解决
用HttpClient的时候遇到一个问题:
org.apache.http.client.CircularRedirectException: Circular redirect to...
解决方法如下:
HttpParams params =
new
BasicHttpParams();
HttpGet getMethod =
new
HttpGet(
"http://XXXX.XXX"
);
getMethod.getParams().setParameter(
"http.protocol.allow-circular-redirects"
,
true
);
HttpResponse response = httpClient.execute(getMethod);
参考了:http://z1y1m1.blog.163.com/blog/static/518373272013626778409/
另外记录下相关参数说明:
这些是可以用于定制默认HttpClient实现行为的参数:
- 'http.protocol.handle-redirects':定义了重定向是否应该自动处理。这个参数期望得到一个Java.lang.Boolean类型的值。如果这个参数没有被设置,HttpClient将会自动处理重定向。
- 'http.protocol.reject-relative-redirect':定义了是否相对的重定向应该被拒绝。HTTP规范需要位置值是一个绝对URI。这个参数期望得到一个java.lang.Boolean类型的值。如果这个参数没有被设置,那么就允许相对重定向。
- 'http.protocol.max-redirects':定义了要遵循重定向的最大数量。这个重定向数字的限制意在防止由破碎的服务器端脚本引发的死循环。这个参数期望得到一个java.lang.Integer类型的值。如果这个参数没有被设置,那么只允许不多余100次重定向。
- 'http.protocol.allow-circular-redirects':定义环形重定向(重定向到相同路径)是否被允许。HTTP规范在环形重定向没有足够清晰的允许表述,因此这作为可选的是可以开启的。这个参数期望得到一个java.lang.Boolean类型的值。如果这个参数没有被设置,那么环形重定向就不允许。
- 'http.connection-manager.factory-class-name':定义了默认的ClientConnectionManager实现的类型。这个参数期望得到一个java.lang.String类型的值。如果这个参数没有被设置,对于每个默认的将使用SingleClientConnManager。
- 'http.virtual-host':定义了在头部信息Host中使用的虚拟主机名称,来代替物理主机名称。这个参数期望得到一个HttpHost类型的值。如果这个参数没有被设置,那么将会使用目标主机的名称或IP地址。
- 'http.default-headers':定义了每次请求默认发送的头部信息。这个参数期望得到一个包含Header对象的java.util.Collection类型值。
- 'http.default-host':定义了默认主机。如果目标主机没有在请求URI(相对URI)中明确指定,那么就使用默认值。这个参数期望得到一个HttpHost类型的值。