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进行127.0.0.1:8080地址的问题,然后该地址自动重定向127.0.0.1:8080/mobserver,如何获取该地址呢?使用HttpContext,下面是示例
HttpClient工具类封装,基于httpclient4.5.12,有get、post、put、delete方法,可设置连接超时时间,请求超时时间,socket读写超时时间,设置是否允许重定向,字符集
httpclient4 中文版帮助文档,...HttpClient不会去缓存内容,执行 嵌入在HTML页面中的javascript代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。 第一章 基础 1.1 执行请求 ......
采用httpclient方式和RestTemplate方式两种方式调用http或htpps请求的接口
go-httpclient, golang的高级HTTP客户端 去 httpclient golang的高级HTTP客户端。特性可以链接的API直接文件上传超时HTTP代理CookieGZIP重定向策略安装go get github.com/ddliu/go-h
重定向政策 取消(有上下文) 安装 go get github.com/ddliu/go-httpclient 快速开始 package main import ( "github.com/ddliu/go-httpclient" ) func main () { httpclient . Defaults (httpclient. Map { ...
特征Http1 / H2 / H2cUpgrade Https Epoll / NIO 拦截器筛选重试,重定向,100预期连续分段读/写多部分指标更多功能...Maven依赖< dependency> < groupId>io.esastack</ groupId> < artifactId>httpclient-core...
HttpClient client = vertx . createHttpClient();// initClientRedirectHandler rh = new ClientRedirectHandler (client, url, maxRedirectsCount);// runObservable< Buffer> obs = rh . toObservable();obs . ...
em-http-request, 异步HTTP客户端( EventMachine + ruby ) EM-HTTP-Request 异步( EventMachine ) HTTP客户端,支持:异步 HTTP API用于单&并行请求执行保持活动状态和HTTP管道支持自动跟随 3xx 重定向最大深度自动 ...
2020年12月21日--使用HttpClient改进HTTP重定向管理 2020年12月14日-无法设置HTTP标头可能导致的潜在问题 2020年11月 2020年11月23日--仔细研究如何处理HTTP重定向 2020年11月21日-重构-重构代码以使用C#9中引入的...
支持重定向 Intellisense和编译支持: 安装 npm install typed-rest-client --save 或安装最新的预览: npm install typed-rest-client@preview --save 样品 看到的完整编码的例子。 另请参阅和测试以获取详细示例...
Laravel 身份验证超时 一个处理身份验证超时的小型 Laravel 8 包。 升级到 v3 时,请参阅 。 有关 Laravel 6+ 的支持,请参阅 。为什么 Laravel 身份验证超时?...目录重定向AuthTimeout 外观 安装composer require j
该库提供以下内容: 异步和非阻塞请求方法简单的后续重定向(删除 cookie 标头) 流媒体下载TLS 支持Cookie 解析(但不是存储) 注意:您需要或才能试用AsyncHTTPClient 。入门添加依赖在Package.swift添加以下条目...
它截取了Angular Http和HttpClient请求,否则这些请求将发送到远程服务器,并将它们重定向到您控制的内存中数据存储。 有关快速介绍,请参见。它曾经可以工作,现在却不:-( 也许您安装了该库的新版本? 检查是否有...
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。 (4) 图片缓存模块:加载...
在复杂的环境中请求HTTP URL-基本身份验证和摘要身份验证,重定向,Cookie,超时等。 安装 $ npm install urllib --save 用法 打回来 var urllib = require ( 'urllib' ) ; urllib . request ( '...
特性GET/POST/PUT/DELETE/UPDATE 等请求方式浏览器级别 Cookies 管理上传及下载请求头和响应头失败重试自动重定向HTTP 代理方式请求SSL 证书(HTTPS)并发批量请求HTTP2WebSocketCurl & Swoole 环境智能兼容连接池...
Java的世界里,HttpClient 是一个功能强大的Http请求库,然而接口非常复杂,设计上遵从正交性,简单的请求也需要写比较多的代码,更不要说隐藏在各种细节里面的高级用法了。Requests, 是一个模仿python requests ...
HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略. 支持标准的Cookie策略, 区分domain, path. 事件注解去除不常用的功能, 提高性能. 数据库api简化提高性能, 达到和greenDao一致的...