2 amaspi AmaSpi 于 2016.03.19 00:11 提问

HttpURLConnection中setFollowRedirects()的问题

使用HttpURLConnection请求时设置了setFollowRedirects()为false,为什么还是会重定向?检查getFollowRedirects()的返回结果为false,但请求确实发生了重定向。求大神解释一下。

2个回答

AmaSpi
AmaSpi   2016.03.23 19:38
已采纳

我想我应该找到原因了;要在HttpURLConnection实例化之前设置HttpURLConnection.setFollowRedirects(false)。setFollowRedirects()是静态方法,设置为false后后面实例化的HttpURLConnection对象才不会发生重定向,如果在setFollowRedirects()设置为false之前就得到HttpURLConnection对象,则该对象的setFollowRedirects()为默认的true。看来setFollowRedircts()的顺序很重要。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.19 09:09

首先,setFollowRedirects()方法说明:设置成true,系统自动处理重定向;设置成false,则需要自己从http reply中分析新的url自己重新连接。
其次,你说的确实发生了重定向是页面返回了重定向的页面了吗?安装API说明的如果没有错的话,你设置为false的话,应该返回的是一个包含重定向地址的页面,你应该从这个页面上提取重定向地址继续访问。
你可以对比输出下设置为true和false两种值,请求返回的数据内容有什么不同。

AmaSpi
AmaSpi setFollowRedirects(false)时,为什么url.getHost().equals(httpurlconnection.getURL().getHost())为false,getResponseCode()为200,getResponseMessage()为OK。设置不重定向的话,不是应该请求的URL不会自动变吗?而且返回吗不应该是3xx吗?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!