锁定老帖子 主题:HttpClient重定向
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-09
最后修改:2009-04-17
HttpClient Redirects Handling 简介 这份文档简单介绍下HttpClient手动处理重定向功能。 因为某些原因,比如需要人工的支持或者HttpClient不支持又或者网络的限制(如需要特殊的权限才可以访问的资源),有些类型的重定向是HttpClient不能自动处理的。当前版本的HttpClient不能够自动处理POST和PUT方法的重定向。 手动处理重定向 介于300和399之间的状态码,都代表重定向。最常见的重定向状态码如下: · 301 HttpStatus.SC_MOVED_PERMANENTLY,永久移除。 · 302 HtpStatus.SC_MOVED_TEMPORARILY,暂时移除。 · 303 HttpStatus.SC_SEE_OTHER,重定向到其他资源。 · 307 HttpStatus.SC_TEMPORARY_REDIRECT,临时重定向。 注意:有些3XX的状态码并不只是简单给发送请求标识一个不同的URL。这些状态码需要应用自行处理。 当应用程序收个一个简单的重定向Responses时,必须用新的URL去执行HttpMethod的executeMethod方法,重新下载新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去请求对应的资源。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 4716 次