论坛首页 Java企业应用论坛

HttpClient重定向

浏览 4716 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-09   最后修改:2009-04-17

HttpClient Redirects Handling

简介

 

这份文档简单介绍下HttpClient手动处理重定向功能。

 

因为某些原因,比如需要人工的支持或者HttpClient不支持又或者网络的限制(如需要特殊的权限才可以访问的资源),有些类型的重定向是HttpClient不能自动处理的。当前版本的HttpClient不能够自动处理POSTPUT方法的重定向。

 

手动处理重定向

 

介于300399之间的状态码,都代表重定向。最常见的重定向状态码如下:

·       301 HttpStatus.SC_MOVED_PERMANENTLY,永久移除。

·       302 HtpStatus.SC_MOVED_TEMPORARILY,暂时移除。

·       303 HttpStatus.SC_SEE_OTHER,重定向到其他资源。

·       307 HttpStatus.SC_TEMPORARY_REDIRECT,临时重定向。

注意:有些3XX的状态码并不只是简单给发送请求标识一个不同的URL。这些状态码需要应用自行处理。

 

当应用程序收个一个简单的重定向Responses时,必须用新的URL去执行HttpMethodexecuteMethod方法,重新下载新URL对应的资源。通常,我们采用递归的方式去处理重定向,以防有多个重定向,不过要加标识数去结束你的递归。

 

String redirectLocation;

        Header locationHeader = method.getResponseHeader("location");

        if (locationHeader != null) {

            redirectLocation = locationHeader.getValue();

        } else {

            // The response is invalid and did not provide the new location for

            // the resource.  Report an error or possibly handle the response

            // like a 404 Not Found error.

        }

String redirectLocation;

        Header locationHeader = method.getResponseHeader("location");

        if (locationHeader != null) {

            redirectLocation = locationHeader.getValue();

        } else {

            // The response is invalid and did not provide the new location for

            // the resource.  Report an error or possibly handle the response

            // like a 404 Not Found error.

        }

 

当得到新的Location以后,你可以对待一个新的URL一样,使用HttpClient去请求对应的资源。

 

 

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics