HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
 
除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。
 
HttpURLConnection和HttpClient区别
 
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,
 
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。

这两个工具主要的区别如下表:
对比项目 URLConnection HTTPClient
提交方式(Methods) HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, WEBDav, IPP, 甚至各种自定义提交方式
响应(Response Codes) 只能获取http状态码小于400的状态码,响应头信息(headers),响应内容.对于响应状态码为4xx或者5xx获取response的任何信息都只会抛出IOException 任何时候都可以获取响应的任何信息:响应状态码,响应头信息,响应内容信息等等。
代理和SOCKS 支持,SOCKS仅支持4 支持,SOCKS支持4和5
认证(Authorization) 支持Basic、早期的Digest JDK1.2+(不支持现在的Digest authentication),甚至不能处理apache返回的Digest信息 支持Basic、Digest Authentication、自定义的其他认证方案
Cookies 不支持 支持
请求输出流
(True request output streams)
请求发送之前,所有的数据都被缓存起来 通过socket直接输出HttpOutputStream
响应输入流
(True response input streams)
JDK1.2-支持,1.3+不支持chunked encoding(不支持大多数推送服务器的响应) 支持
长连接
(Persistent Connections)
JDK1.2- HTTP/1.0 Keep-Alive,JDK1.3+ HTTP/1.1 Persistent 支持HTTP/1.0 Keep-Alive 和 HTTP/1.1 Persistent
Pipelining of Requests 不支持 支持
设置超时 不支持 支持
处理HTTP之外的协议 支持如:ftp, gopher, mailto,文件系统 不支持
处理HTTPs 支持部分SSL,如JSSE,前提是客户端必须安装 可以通过补丁的方式使用免费或者收费的SSL
开源
 

最新文章

  1. Win7下VS2008破解方法
  2. 解决 adb.exe 停止工作小续
  3. ckeditor+angularjs directive
  4. 测试数学公式latex
  5. Linux虚拟机安装(CentOS 6.5,图文详解,需要自查)
  6. location.hash详解
  7. ef 对象无法序列化的问题(System.Data.Entity.DynamicProxies)
  8. 如何将maven项目导入MyEclipse
  9. ActiveMQ 使用
  10. 夺命雷公狗jquery---1选择元素的3种方法
  11. poj 1523 SPF【点双连通求去掉割点后bcc个数】
  12. 使用STL处理分支限界法处理最优装载问题
  13. js中键盘按键对应的键值
  14. ml-agent:Win10下环境安装
  15. hihoCoder编程练习赛70
  16. VS2013 生成时复制文件或目录到指定目录
  17. facebook api之Ad
  18. Hadoop生态圈-Kafka的完全分布式部署
  19. (纪录片)科学的故事:权力、证据与激情 The Story Of Science: Power, Proof And Passion
  20. eclipse svn 冲突解决

热门文章

  1. Mono For Android离线激活
  2. Linux 开机自检的设置(tune2fs和fsck)
  3. linux查看cpu温度
  4. 实现自己的cp命令
  5. [转] 深度解剖DIV+CSS工作原理
  6. 关于 iOS socket 都在这里了
  7. WWDC心愿单:新版OS X或将有这些变化
  8. 使用EF 的简单的增删改查
  9. 经验分享:CSS浮动(float,clear)通俗讲解(转载)
  10. springmvc的几点见解