HttpClient_入门学习(一)
2018-01-31 15:21
555 查看
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.导入依赖
使用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
内容分块
是 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
内容分块
相关文章推荐
- Jakarta Commons HttpClient 学习(入门)
- HTTPCLIENT 学习 (1) 入门
- HttpClient_入门学习(二)
- HttpClient入门教程
- Android 网络操作学习HttpURLConnection与HttpClient及网络框架选择
- HttpClient入门
- Spring MVC的一些学习笔记-入门配置和HttpMessageConverter
- 机器人操作系统ROS Indigo 入门学习(14)——用C++语言写一个简单的service和client
- 07_android入门_採用HttpClient的POST方式、GET方式分别实现登陆案例
- java apache commons HttpClient发送get和post请求的学习整理
- HttpClient入门
- cocos2d-x学习日记之网络通信篇—HttpClient
- 【Android进阶学习】Http编程之HttpClient
- HttpClient 学习整理(转)
- http://blog.csdn.net/wankunde/article/details/41675079/Spark 学习入门教程
- 为 Android 开发访问 JAX-RS Web 服务的 Apache HttpClient 客户端 学习创建 Apache HttpClient Android 客户端
- HttpClient 学习整理
- HttpClient入门
- 【转】HttpClient入门
- Jakarta Commons HttpClient 学习笔记