`
mgoann
  • 浏览: 249591 次
  • 性别: 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进行127.0.0.1:8080地址的问题,然后该地址自动重定向127.0.0.1:8080/mobserver,如何获取该地址呢?使用HttpContext,下面是示例

    HttpClient工具类封装.docx

    HttpClient工具类封装,基于httpclient4.5.12,有get、post、put、delete方法,可设置连接超时时间,请求超时时间,socket读写超时时间,设置是否允许重定向,字符集

    httpclient4_中文版帮助文档.

    httpclient4 中文版帮助文档,...HttpClient不会去缓存内容,执行 嵌入在HTML页面中的javascript代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。 第一章 基础 1.1 执行请求 ......

    使用httpclient方式和RestTemplate方式调用http及https接口

    采用httpclient方式和RestTemplate方式两种方式调用http或htpps请求的接口

    go-httpclient, golang的高级HTTP客户端.zip

    go-httpclient, golang的高级HTTP客户端 去 httpclient golang的高级HTTP客户端。特性可以链接的API直接文件上传超时HTTP代理CookieGZIP重定向策略安装go get github.com/ddliu/go-h

    go-httpclient:用于golang的高级HTTP客户端

    重定向政策 取消(有上下文) 安装 go get github.com/ddliu/go-httpclient 快速开始 package main import ( "github.com/ddliu/go-httpclient" ) func main () { httpclient . Defaults (httpclient. Map { ...

    esa-httpclient:ESA HttpClient是基于netty的异步事件驱动的HTTP客户端

    特征Http1 / H2 / H2cUpgrade Https Epoll / NIO 拦截器筛选重试,重定向,100预期连续分段读/写多部分指标更多功能...Maven依赖< dependency> < groupId>io.esastack</ groupId> < artifactId>httpclient-core...

    http_client:具有重定向处理功能的 vertx 3 http 客户端

    HttpClient client = vertx . createHttpClient();// initClientRedirectHandler rh = new ClientRedirectHandler (client, url, maxRedirectsCount);// runObservable< Buffer> obs = rh . toObservable();obs . ...

    em-http-request, 异步HTTP客户端( EventMachine + ruby ).zip

    em-http-request, 异步HTTP客户端( EventMachine + ruby ) EM-HTTP-Request 异步( EventMachine ) HTTP客户端,支持:异步 HTTP API用于单&并行请求执行保持活动状态和HTTP管道支持自动跟随 3xx 重定向最大深度自动 ...

    BlogCode:我博客中的代码-https

    2020年12月21日--使用HttpClient改进HTTP重定向管理 2020年12月14日-无法设置HTTP标头可能导致的潜在问题 2020年11月 2020年11月23日--仔细研究如何处理HTTP重定向 2020年11月21日-重构-重构代码以使用C#9中引入的...

    typed-rest-client:具有TypeScript的类型的Node Rest和Http客户端

    支持重定向 Intellisense和编译支持: 安装 npm install typed-rest-client --save 或安装最新的预览: npm install typed-rest-client@preview --save 样品 看到的完整编码的例子。 另请参阅和测试以获取详细示例...

    laravel-auth-timeout:Laravel 的身份验证超时

    Laravel 身份验证超时 一个处理身份验证超时的小型 Laravel 8 包。 升级到 v3 时,请参阅 。 有关 Laravel 6+ 的支持,请参阅 。为什么 Laravel 身份验证超时?...目录重定向AuthTimeout 外观 安装composer require j

    async-http-client:基于 SwiftNIO 构建的 HTTP 客户端库

    该库提供以下内容: 异步和非阻塞请求方法简单的后续重定向(删除 cookie 标头) 流媒体下载TLS 支持Cookie 解析(但不是存储) 注意:您需要或才能试用AsyncHTTPClient 。入门添加依赖在Package.swift添加以下条目...

    in-memory-web-api:此项目的代码已移至angularangular存储库。 此仓库现在已存档

    它截取了Angular Http和HttpClient请求,否则这些请求将发送到远程服务器,并将它们重定向到您控制的内存中数据存储。 有关快速介绍,请参见。它曾经可以工作,现在却不:-( 也许您安装了该库的新版本? 检查是否有...

    Android 常用六大框架

    下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。 (4) 图片缓存模块:加载...

    urllib:在复杂的环境中请求HTTP URL

    在复杂的环境中请求HTTP URL-基本身份验证和摘要身份验证,重定向,Cookie,超时等。 安装 $ npm install urllib --save 用法 打回来 var urllib = require ( 'urllib' ) ; urllib . request ( '...

    YurunHttp:YurunHttp 是开源的 PHP HTTP 客户端,支持链式操作,简单易用。完美支持Curl、Swoole 协程。QQ群:17916227

    特性GET/POST/PUT/DELETE/UPDATE 等请求方式浏览器级别 Cookies 管理上传及下载请求头和响应头失败重试自动重定向HTTP 代理方式请求SSL 证书(HTTPS)并发批量请求HTTP2WebSocketCurl & Swoole 环境智能兼容连接池...

    HTTP请求库java-requests.zip

    Java的世界里,HttpClient 是一个功能强大的Http请求库,然而接口非常复杂,设计上遵从正交性,简单的请求也需要写比较多的代码,更不要说隐藏在各种细节里面的高级用法了。Requests, 是一个模仿python requests ...

    xUtils3 demo

    HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略. 支持标准的Cookie策略, 区分domain, path. 事件注解去除不常用的功能, 提高性能. 数据库api简化提高性能, 达到和greenDao一致的...

Global site tag (gtag.js) - Google Analytics