httpclient 连接路由
http路由
httpclient能够直接或通过路由建立连接到目标主机,这会涉及多个中间连接,也被称为跳。
Httpclient区分路由和普通连接,通道和分层。
通道连接到目标主机的多个中间代理的使用也被称为是代理链。
普通路由
连接直接连接到目标或仅通过一个代理来创建。
通道路由
通过代理链直接连接到目标来建立,没有代理的路由不是通道的,
分层路由
通过已存在的连接的分层协议来建立。协议仅仅可以在到目标的通道上火没有代理的直接连接上分层。
路由计算
RouteInfo接口代表关于最终涉及一个或多个中间步骤或跳目标主机路由的信息。
HttpRoute是RouteInfo的具体实现,这是不能改变的(不变的)。
HttpTraker是可变的RouteInfo的实现,有Httpclient在内部使用来跟踪到最大路由目标的剩余跳数。HttpTracker可以在成功执行项路由目标的下一跳之后更新。
HttpRouteDirector是一个帮助类,可以用来计算路由中的下一跳。这个类由HttpClient在内部使用
HttpRoutePlanner是一个代表计算到基于执行上下文到给定目标完成路由策略的接口。
HttpClient附带两个默认的HttpRoutePlanner实现。ProxySelectorRoutePlanner是基于java.NET.ProxySelector的。
默认情况下,它会从系统属性中或从运行应用程序的浏览器中选取JVM的代理设置。
DefaultHttpRoutePlanner实现即不使用任何java系统属性,也不使用系统或浏览器的代理设置,它只基于Http如下面描述的参数计算路由。
Http路由参数
http.route.default-proxy
定义可以被不使用JRE设置的默认路由规划者使用的代理主机。
这个参数期望得到一个HttpHost类型的值。
如果这个值没有被设置,那么就会尝试直接连接到目标。
http.route.local-address
定义一个本地地址有所有默认路由规划者来使用。
有多个网络接口的机器中,这个参数可以被用于从连接源中选择网络接口。
这个参数期望得到一个java.net.InetAddress类型的值。
如果这个参数参数没有被设置,将会自动使用本地地址
http.route.forced-route
定义了一个由所有默认路由规划者使用的强制路由。
代替了计算路由,给定的强制路由将会被返回,尽管指向一个完全不同的主机,这个参数期望得到一个httpRoute类型的值。
如果这个参数没有被设置,那么就使用默认的规则建立连接到目标服务器
httpclient 连接路由的更多相关文章
- httpClient 连接池问题出现403.9
困扰了半个月时间终于找到连接池的问题,由于调用第三方有异常导致连接不能及时释放 所以写了一个定时扫描释放连接 监控连接池释放连接: public static class IdleConnection ...
- (五)HttpClient 连接超时及读取超时
第一节: HttpClient 连接超时及读取超时 HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间: HttpClient连接 ...
- HttpClient连接超时及读取超时
HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间: HttpClient连接时间 所谓连接的时候 是HttpClient发送请求 ...
- HttpClient连接池的一些思考
前言 使用apache的httpclient进行http的交互处理已经很长时间了,而httpclient实例则使用了http连接池,想必大家也没有关心过连接池的管理.事实上,通过分析httpclien ...
- HttpClient连接池设置引发的一次雪崩
事件背景 我在凤巢团队独立搭建和运维的一个高流量的推广实况系统,是通过HttpClient 调用大搜的实况服务.最近经常出现Address already in use (Bind failed)的问 ...
- Http持久连接与HttpClient连接池
一.背景 HTTP协议是无状态的协议,即每一次请求都是互相独立的.因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接. HTTP协议是全双工的协议, ...
- Http 持久连接与 HttpClient 连接池
一.背景 HTTP协议是无状态的协议,即每一次请求都是互相独立的.因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接. HTTP协议是全双工的协议, ...
- HttpClient连接池
HttpClient连接池,发现对于高并发的请求,效率提升很大.虽然知道是因为建立了长连接,导致请求效率提升,但是对于内部的原理还是不太清楚.后来在网上看到了HTTP协议的发展史,里面提到了一个属性C ...
- HttpClient实战三:Spring整合HttpClient连接池
简介 在微服务架构或者REST API项目中,使用Spring管理Bean是很常见的,在项目中HttpClient使用的一种最常见方式就是:使用Spring容器XML配置方式代替Java编码方式进行H ...
随机推荐
- Adobe9阅读器渗透攻击——20145301
Adobe9阅读器渗透攻击 实验步骤: 在kali终端中开启msfconsole,输入命令use exploit/windows/fileformat/adobe_cooltype_sing,进入该漏 ...
- 20165211 预备作业3 Linux安装与学习
20165211 预备作业3 Linux安装与学习 1. Linux安装 涉及软件:VirtualBox,Ubuntu 参考教程:基于VirtualBox安装Ubuntu图文教程 安装过程的问题 在安 ...
- hash-补做
题目 利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75) 关键字集合:85,75,57,60,65,(你的8位学号相加 ...
- Django组件(四) Django之Auth模块
Auth模块概述 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能 ...
- UNIX系统的显示时间何时会到尽头
本文转载自:http://www.cnblogs.com/dfcao/p/expertCprogramming_intr0.html 本文分为三个小块: 一.UNIX系统中时间的存储形式: 二. ti ...
- 地宫取宝|2014年蓝桥杯B组题解析第九题-fishers
地宫取宝 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- VS中sln和suo的区别
1.调试程序出现这个错误an error occurred while validating 解决方案:http://stackoverflow.com/questions/8648428/an-er ...
- ZedGraph如何动态的加载曲线
ZedGraph的在线文档 http://zedgraph.sourceforge.net/documentation/default.html 官网的源代码 http://sourceforge.n ...
- Redis集群学习笔记
Redis集群学习笔记 前言 最近有个需求,就是将一个Redis集群中数据转移到某个单机Redis上. 迁移Redis数据的话,如果是单机Redis,有两种方式: a. 执行redis-cli shu ...
- django 接口编写的配置
一.修改settings文件 ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'corsheaders' ] #加入该app 安装django-cors-hea ...