HttpURLConnection中setFollowRedirects()的问题

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

2个回答

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

首先,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吗?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问