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_入门学习(一)
- Jakarta Commons HttpClient 学习(入门)
- HTTPCLIENT 学习 (1) 入门
- Android网络框架学习之HttpClient
- apache httpclient 4 学习和例子
- HttpClient入门
- httpClient入门
- java apache commons HttpClient发送get和post请求的学习整理
- HttpClient 学习记录---URIBuilder
- HttpCore学习----Blocking I/O部分---基本client的实现
- android 学习随笔十一(网络:HttpClient框架)
- Clojure 学习入门(10)- httpkit
- httpClient入门到精通-------配置参数
- 机器人操作系统ROS Indigo 入门学习(14)——用C++语言写一个简单的service和client
- Jakarta Commons HttpClient 学习笔记
- 【Android进阶学习】Http编程之HttpClient
- httpclient简单学习(一)
- HttpClient 学习整理
- HTTPClient4.5.2学习笔记(三): HTTP状态管理(state management)
- httpClient入门到精通-------spring整合