期待HTTP状态301,但始终从HttpURLConnection的getResponseCode()获得状态200

时间:2015-12-30 16:17:05

标签: httpurlconnection http-status-code-301

在向安全URL发送HTTP POST请求并接收状态代码时,我的应用程序需要决定是否输出响应,或者在重定向的情况下,将HTTP GET请求发送到标题“Location”中指定的URL

这适用于登录页面的至少一个URL,该页面返回带有重定向位置信息的HTTP状态代码302到其主页。然后我的应用程序在主页位置进行GET。到目前为止一切都很好。

在向另一个登录页面的这个有问题的URL发送POST请求时,我总是从getResponseCode()返回一个HTTP 200,其中登录页面本身作为内容结果。 POST请求发送时带有正确的登录信息,服务器响应带有301,至少我可以用Firefox浏览器的插件(RESTClient)检查。

使用RESTClient插件,我得到了一个HTTP 301和响应主体(主页)。下面是我使用RESTClient测试时得到的响应头:

  

状态码:301永久移动缓存控制:私有   内容长度:62718内容类型:text / html; charset = utf-8日期:   2015年12月30日星期三15:40:57 GMT服务器:Microsoft-IIS / 7.5 Set-Cookie:   osVisit = 55754609-0612-4846-97af-8b7dff36b56e;到期= 2015年12月30日星期三   格林尼治标准时间16:10:56;路径= /; HttpOnly pageLoadedFromBrowserCache = false;   path = / X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET   X-UA兼容:IE =边缘,铬= 1

有人知道这里会发生什么吗?

1 个答案:

答案 0 :(得分:-1)

@Marin,

如果您想要自动关注重定向,则需要通过设置followRedirects(setFollowRedirects(true))或instanceFollowRedirects(setInstanceFollowRedirects(true))来告知UrlConnection。否则帖子会自动进行重定向,您将获得http 200。

希望这会有所帮助,
的Ivar