HttpClient_入门学习(一)

   HttpClient 是 ApacheJakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协 议的客户端编程工具包(jar包),并且它支持 HTTP 协议最新的版本和建议。

  

  HttpClient主要的功能:

   1.实现了所有http方法(get,post,put,delete)等等....

   2. 支持自动转向

   3.支持代理服务器等

   4.支持https协议等


  但是,HttpClient并没有眼中的那么好,HttpClient的维护人员并不积极,因为api数量过多,很难在不破坏兼容的情况 下更新迭代,HttpClient的备胎已经出现了,(HttpURLConnect)

   谷歌人员给出的原因如下

   1.上面我们讲了,因为兼容性性问题

   2.HttpURLConnect的api包很小,更适合安卓

   3.HttpURLConnect更省流量,


  不过我们不能因为过时了就不学习了,既然来了就看完再走把....


 我在网上找了案例,和一些资料,为了能够更好的学习........


 

   HttpClient提供了URLBuilder类来简化url的创建 | 修改的过程.......


   我们还是来写把,感觉这样的话印象会深刻一点,

    1.创建一个maven工程

    2.导入依赖

           

 <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.3.5</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.6.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>


          使用builder创建uri代码如下


   


   控制台会输出如下:

   

  

 系统接收到http请请求的时候,就会进行解析,然后进行响应,然后这个响应就是HTTP response.HTTP,响应的第一行是协议版本,

 然后是状态码以及文本,

 

  输出结果如下

   

 消息头

  一个Http请求包含一系列消息头,用来对消息进行描述,比如消息长度,消息类型等,HttpClient提供了获取请求,添加,移除,

 枚举消息头等....

  

 推荐的获取指定消息的请求头的方式是使用HeaderIterator


 控制台会打印 :

 

 

  确保底层资源被释放

 


   

  这里需要说明一下,关闭http内容流跟http响应流的区别在于.前者通过消耗http内容流来保持连接,后者会立即关闭,丢弃

http连接.

 当然也有这种情况,这是需要注意的.我们只需要获取响应头的一小部分东西,但是我们需要获取整个内容,并实现链接的重复性代价太大,

我们可以通过关闭响应的方式来关闭内容的输入输出流.

  



 以上代码后,连接变得不可用,所有的资源都被释放.................


  HttpClient推荐我们使用,HttpEntity的getContent方法来获取内容,或使用HttpEntity的writeTo方法来消耗掉实体内容,

 HtttpClient也提供了EntityUtils类来读取,这个类提供了静态方法可以更容易的读取http内容,当时并不推荐使用,除非网站是可,

 信任的,并且内容长度不大,官方给了以下例子........


 

有些情况下,我们需要持久化数据,为了重复使用,这时我们应该把HttpEntity转换成BufferedHttpClient();

  


 HTML表单
  很多应用程序都需要模拟提交表单这个过程,咋们爵个栗子,登陆一个网站或者将数据提交给服务器,,,,,HttpClient就提供了一个
来帮忙我们实现这一例子, 
 

 HttpClient会对我们的编码格式进行编码,编码内容如下

  username=zs&password=123


内容分块

 



猜你喜欢

转载自blog.csdn.net/qq_40794266/article/details/79211177