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去请求对应的资源。
分享到:
相关推荐
当HttpClient发起一个GET或POST请求,如果服务器返回的状态码表明需要进行重定向(例如301、302),HttpClient会自动处理重定向,即它会自动发送新的请求到重定向的目标URL,并返回那个URL的响应内容。然而,如果...
3. 重定向处理:HttpClient可以自动处理重定向,也可以自定义重定向策略。 4. 请求与响应处理:通过EntityUtils可以方便地处理请求和响应的实体内容,如读取、写入、转换等。 5. 异步请求:HttpClient提供异步执行...
HttpClient库允许开发者执行各种HTTP方法(如GET、POST、PUT等),处理重定向、认证、cookie管理等复杂网络交互,同时提供了线程安全和高效的连接管理机制。这个库在处理Web服务API、爬虫程序或任何需要与HTTP服务器...
3. **重定向处理**:HttpClient可以自动处理HTTP状态码3xx的重定向,也可以手动控制是否跟随重定向。 4. **请求和响应处理**:通过HttpEntity和HttpEntityEnclosingRequest接口,HttpClient支持各种类型的请求实体...
- 可以通过设置RedirectStrategy来控制HttpClient如何处理重定向,比如是否自动跟随重定向。 7. **Cookie管理**: - HttpClient内置了CookieSpec和CookieStore,用于处理服务器返回的cookies和发送cookies到...
6. **重定向处理**:HttpClient 4.3提供自动处理HTTP重定向的能力,可以根据需要配置是否遵循重定向以及重定向的最大次数。 7. **认证和安全**:HttpClient支持基本认证、NTLM、Kerberos等多种认证机制,并且可以...
HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 7. **错误处理**: 当请求失败时,HttpClient会抛出异常,如`IOException`或`ClientProtocolException`。在实际应用中,...
3. **重定向处理**:HttpClient可以自动处理服务器返回的重定向响应,开发者可以通过设置策略控制是否自动跟随重定向,以及最大重定向次数。 4. **HTTPS支持**:HttpClient 4.1.2支持SSL/TLS,可以处理HTTPS连接,...
6. **重定向处理**:HttpClient可以自动处理HTTP状态码为3xx的重定向响应,也可以由开发者手动控制重定向行为。 7. **请求/响应拦截器**:HttpClient提供了请求和响应拦截器接口,允许在请求发送前和响应接收后进行...
7. **重试和重定向策略**:HttpClient 4.2.1允许开发者定制重试和重定向策略。`HttpRequestRetryHandler`和`RedirectStrategy`接口提供了相应的控制。 8. **HTTP实体**:HttpClient 4.2.1支持各种类型的HTTP实体,...
HttpClient 3.1是其早期的一个稳定版本,支持HTTP/1.1协议,并且包含了对HTTPS、代理服务器、Cookie管理、连接池、重定向处理等多种网络通信场景的支持。 二、核心概念与组件 1. HttpClient实例:作为主要的入口点...
在使用HttpClient时,开发者需要注意配置连接管理器、设置合适的超时、处理重定向和重试、以及选择合适的认证方式。同时,由于HttpClient的灵活性,正确地关闭和管理连接资源也非常重要,以避免资源泄露。 总之,...
- **处理重定向**:HttpClient支持自动处理重定向,但也可以通过配置关闭此功能,自定义重定向策略。 - **请求与响应拦截器**:利用`HttpRequestInterceptor`和`HttpResponseInterceptor`,可以在请求发送前和响应...
它提供了丰富的功能,包括GET、POST、PUT、DELETE等HTTP方法的支持,以及Cookie管理、URL连接重定向、请求与响应头的处理等。在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService...
《HttpClient 4.5:构建高效网络请求的利器》 HttpClient是Apache软件基金会下的一个开源项目,主要用于提供高效的、最新的、功能丰富的HTTP协议客户端编程工具包。HttpClient 4.5作为其重要的版本,针对Java开发者...
HttpClient 的功能包括但不限于 HTTP 请求的执行、响应的处理、连接管理、异常处理、协议拦截器以及重定向处理等。 在讨论HttpClient的文档时,首先应该明确它的使用范围,也即HttpClient能够做什么,以及它不做...
HttpClient可以自动处理服务器返回的重定向响应,通过设置RedirectHandler实现自定义重定向策略。 六、异常处理 HttpClient中常见的异常类有HttpException、IOException等,需要在使用过程中捕获并处理。 七、安全...
它包括了各种HTTP方法(如GET、POST、PUT等)、重定向处理、Cookie管理、身份认证以及连接管理等功能。版本4.5.x系列对HTTP/1.1协议有很好的支持,并引入了对HTTP/2的部分支持。此外,HttpClient还支持异步操作,...
7. **Redirect Handling**:HttpClient可以处理重定向,通过设置`RedirectStrategy`,可以选择是否自动跟随重定向。 8. **Cookie Management**:对于处理需要维持会话的HTTP请求,HttpClient支持Cookie管理,可以...
HttpClient是Apache软件基金会提供的一个开源库,它提供了全面的HTTP功能,包括但不限于GET、POST、PUT等HTTP方法,支持HTTPS、Cookie管理、连接池、重定向处理等。在Java中,使用HttpClient可以方便地发送HTTP请求...