======URLConnection 和 HttpClient的区别======
对比项目 | 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中java.net.**包下已经有了相关的网络通信的方式,Android中还要多此一举呢(加入org.apache.http.**相关的网络通信方式),很明显前者已经不能满足相关的需求,显得很陈旧。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。