您的位置:首页 > 理论基础 > 计算机网络

HttpClient_入门学习(二)

2018-02-01 22:06 549 查看

RESPONSE HANDLER:

HttpClient提供了一个处理http响应的方法,就是使用ResponseHandle这个接口,这个接口中有handlerResponse

(HttpResponse),使用这个接口,可以不用关心Http连接管理器,无论请求失败还是异常,http都会将请求释放给Http管理器,





HttpClient接口:

对与http请求执行过程来说,HttpClient接口对于http请求有着重要的作用,http并没有对http请求的过程,
做的特别的限制的详细的规定,连接管理,状态管理,授权信息,和重定向这些功能都单独实现,这样用户就可以更
简单的扩展这个接口的功能.....

我的理解就是,HttpClient其实就是一个特殊的handler处理类,这个handler处理类处理着Http某一方面的

东西,比如 重定向,认证处理,有关持久性连接和keyAlive持续时间的决策,这样我们就可以使用一些参数来代替这

些默认的参数,从而实现各种功能....

public void test_keepAlive(){
ConnectionKeepAliveStrategy strategy = new DefaultConnectionKeepAliveStrategy(){
@Override
public long getKeepAliveDuration(HttpResponse response, HttpContext context) {

long keepAlive = super.getKeepAliveDuration(response, context);

if(keepAlive == -1){
keepAlive = 5000;
}
return keepAlive;
}
};
CloseableHttpClient httpClient = HttpClients.custom().setKeepAliveStrategy(strategy).build();
}


HttpClient的安全性:
HttpClient已经实现了线程安全,所以希望用户在创建httpClient实例时,也要支持多个请求的使用

HttpClient的内存分配

当CloseableHttpClient的实例不再被使用,或者它的作用范围即将失效,和它相关的连接必须被关闭,关闭它的

方法为
close



Http执行上下文:

起初,http被设计成无状态的,
请求 --- 响应 ,然而,在实际中,我们想要在一些逻辑相关的请求,|响应中保存一些状态信息,

HttpClient允许http连接在特定http上下文中执行,如果在持续的http请求中使用了同样的上下文,那么这个http将会被分配到一个

逻辑会话中,http上下文就类似于一个Map<String,Object>,它实际上就是任意值的集合,应用程序可以在http前填充上下文中的值,
也可以在请求执行后检查上下文,,,,,,,,
HttpContent可以包含任意的对象,因次在多线程中并不安全,所以推荐每个线程都包含自己的上下文,Http在执行中,HttpClient会

自动封装以下属性到上下文中,



我们通常使用HttpClientContent来简化 上下文交互的过程



同一个会话中多个Http请求,我们应该使用同一个上下文,这样就会自动的在Http请求中传递状态和信息,下面是我在网上找的一个
的一个例子,在开头设置了参数,会被保存在上下文中,然后会应用到后续的http请求中



异常处理 :

HttpClient会抛出俩种异常,一种是IOException(sock超时,或者sock被重置),这种异常我们认为是可修复的,
HttpException(表示Http失败,请求协议错误),这种异常是不可修复的......

Http传输安全问题 :



应用程序需要处理同一方法多次执行造成的影响,添加一个唯一性的id即可,问题
解决,我们需要明白,并不是HttpClient才会出现这样的情况. 其它浏览器应用也会遇到
方法幂不等的情况,



就讲那么多啦,,,哈哈哈哈,撤退啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HttpClient