`
mgoann
  • 浏览: 253396 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClient重定向

阅读更多

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去请求对应的资源。

 

 

 

分享到:
评论
1 楼 zhupeijun23 2015-07-29  
有点懂了

相关推荐

    httpclient重定向之后获取网址信息示例

    当HttpClient发起一个GET或POST请求,如果服务器返回的状态码表明需要进行重定向(例如301、302),HttpClient会自动处理重定向,即它会自动发送新的请求到重定向的目标URL,并返回那个URL的响应内容。然而,如果...

    httpclient-4.5.3官方API中文文档_最新译版_2886K

    3. 重定向处理:HttpClient可以自动处理重定向,也可以自定义重定向策略。 4. 请求与响应处理:通过EntityUtils可以方便地处理请求和响应的实体内容,如读取、写入、转换等。 5. 异步请求:HttpClient提供异步执行...

    httpclient.jar包下载

    HttpClient库允许开发者执行各种HTTP方法(如GET、POST、PUT等),处理重定向、认证、cookie管理等复杂网络交互,同时提供了线程安全和高效的连接管理机制。这个库在处理Web服务API、爬虫程序或任何需要与HTTP服务器...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    3. **重定向处理**:HttpClient可以自动处理HTTP状态码3xx的重定向,也可以手动控制是否跟随重定向。 4. **请求和响应处理**:通过HttpEntity和HttpEntityEnclosingRequest接口,HttpClient支持各种类型的请求实体...

    apache httpclient jar包

    - 可以通过设置RedirectStrategy来控制HttpClient如何处理重定向,比如是否自动跟随重定向。 7. **Cookie管理**: - HttpClient内置了CookieSpec和CookieStore,用于处理服务器返回的cookies和发送cookies到...

    httpclient4.3工具类

    6. **重定向处理**:HttpClient 4.3提供自动处理HTTP重定向的能力,可以根据需要配置是否遵循重定向以及重定向的最大次数。 7. **认证和安全**:HttpClient支持基本认证、NTLM、Kerberos等多种认证机制,并且可以...

    httpclient

    HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 7. **错误处理**: 当请求失败时,HttpClient会抛出异常,如`IOException`或`ClientProtocolException`。在实际应用中,...

    httpclient4.1.2 jar包

    3. **重定向处理**:HttpClient可以自动处理服务器返回的重定向响应,开发者可以通过设置策略控制是否自动跟随重定向,以及最大重定向次数。 4. **HTTPS支持**:HttpClient 4.1.2支持SSL/TLS,可以处理HTTPS连接,...

    Httpclient依赖包

    6. **重定向处理**:HttpClient可以自动处理HTTP状态码为3xx的重定向响应,也可以由开发者手动控制重定向行为。 7. **请求/响应拦截器**:HttpClient提供了请求和响应拦截器接口,允许在请求发送前和响应接收后进行...

    HttpClient4.2.1版本的Jar包

    7. **重试和重定向策略**:HttpClient 4.2.1允许开发者定制重试和重定向策略。`HttpRequestRetryHandler`和`RedirectStrategy`接口提供了相应的控制。 8. **HTTP实体**:HttpClient 4.2.1支持各种类型的HTTP实体,...

    commons-httpclient-3.1jar包

    HttpClient 3.1是其早期的一个稳定版本,支持HTTP/1.1协议,并且包含了对HTTPS、代理服务器、Cookie管理、连接池、重定向处理等多种网络通信场景的支持。 二、核心概念与组件 1. HttpClient实例:作为主要的入口点...

    httpclient-4.5.3中文版文档,很实用

    在使用HttpClient时,开发者需要注意配置连接管理器、设置合适的超时、处理重定向和重试、以及选择合适的认证方式。同时,由于HttpClient的灵活性,正确地关闭和管理连接资源也非常重要,以避免资源泄露。 总之,...

    httpclient-4.5.2.jar.zip

    - **处理重定向**:HttpClient支持自动处理重定向,但也可以通过配置关闭此功能,自定义重定向策略。 - **请求与响应拦截器**:利用`HttpRequestInterceptor`和`HttpResponseInterceptor`,可以在请求发送前和响应...

    HttpClient 调用WebService示例

    它提供了丰富的功能,包括GET、POST、PUT、DELETE等HTTP方法的支持,以及Cookie管理、URL连接重定向、请求与响应头的处理等。在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService...

    httpclient4.5 jar包

    《HttpClient 4.5:构建高效网络请求的利器》 HttpClient是Apache软件基金会下的一个开源项目,主要用于提供高效的、最新的、功能丰富的HTTP协议客户端编程工具包。HttpClient 4.5作为其重要的版本,针对Java开发者...

    httpClient官方文档

    HttpClient 的功能包括但不限于 HTTP 请求的执行、响应的处理、连接管理、异常处理、协议拦截器以及重定向处理等。 在讨论HttpClient的文档时,首先应该明确它的使用范围,也即HttpClient能够做什么,以及它不做...

    httpclient3.1 javadoc chm版

    HttpClient可以自动处理服务器返回的重定向响应,通过设置RedirectHandler实现自定义重定向策略。 六、异常处理 HttpClient中常见的异常类有HttpException、IOException等,需要在使用过程中捕获并处理。 七、安全...

    httpClient组合包.zip

    它包括了各种HTTP方法(如GET、POST、PUT等)、重定向处理、Cookie管理、身份认证以及连接管理等功能。版本4.5.x系列对HTTP/1.1协议有很好的支持,并引入了对HTTP/2的部分支持。此外,HttpClient还支持异步操作,...

    httpClienthttpClient

    7. **Redirect Handling**:HttpClient可以处理重定向,通过设置`RedirectStrategy`,可以选择是否自动跟随重定向。 8. **Cookie Management**:对于处理需要维持会话的HTTP请求,HttpClient支持Cookie管理,可以...

    HTTPClient 的一个封装

    HttpClient是Apache软件基金会提供的一个开源库,它提供了全面的HTTP功能,包括但不限于GET、POST、PUT等HTTP方法,支持HTTPS、Cookie管理、连接池、重定向处理等。在Java中,使用HttpClient可以方便地发送HTTP请求...

Global site tag (gtag.js) - Google Analytics