Java.net.URLConnection和Apache HTTPClient的主要区别对比
2015-11-12 08:52
459 查看
http://www.jfox.info/java-net-urlconnection%E5%92%8Capache-httpclient%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8C%BA%E5%88%AB%E5%AF%B9%E6%AF%94
出于某些原因,有时候需要通过程序模拟浏览器的行为来获取或者像服务器提交数据,Java提供的简单的java.net工具,Apache同样提供了一个httpcomponents-client,这两个工具主要的区别如下表:
出于某些原因,有时候需要通过程序模拟浏览器的行为来获取或者像服务器提交数据,Java提供的简单的java.net工具,Apache同样提供了一个httpcomponents-client,这两个工具主要的区别如下表:
对比项目 | 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 |
开源 | 否 | 是 |
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统