• HttpURLConnection和HttpClient


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

    这两个工具主要的区别如下表:

    对比项目URLConnectionHTTPClient
    提交方式(Methods)HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONSHEAD, 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
    开源
     





  • 相关阅读:
    练习10.9-2
    [转]JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
    JAVA成员变量为什么不能在类体中先定义后赋值
    core image几个滤镜样例 oc版本号和swift版本号
    UVa 11997 K Smallest Sums 优先队列&&打有序表&&归并
    Android基础新手教程——4.4.1 ContentProvider初探
    Restore IP Addresses -- LeetCode
    Android中Intent传递类对象的方法一(Serializable)
    Effective C++:条款22:将成员变量声明为private
    javascript cookie
  • 原文地址:https://www.cnblogs.com/doit8791/p/4749271.html
Copyright © 2020-2023  润新知