zoukankan      html  css  js  c++  java
  • httpclient学习(原创)

    --httpmime-4.2.5.jar  跟提交Form相关的类

    这一块主要post数据的提交。每一条数据同name和content组成。content可能是字节数组或是流。提交这一类(MIME)的数据的时候,还要添加一些

    header数据。于是FormBodyPart类就诞生了,它的属性有name,header,content。很多个FormBodyPart组成了HttpMultipart(因为HttpMultipart

    有个FormBodyPart的List集合)。所有的东东最后在MultipartEntity中封装。

    org.apache.http.entity.mime包下

    AbstractContentBody->ContentBody->ContentDescriptor  其它的类都是AbstractContentBody的子类了。

    包括ByteArrayBody、FileBody、InputStreamBody、StringBody。  2014-6-6

    --fluent-hc-4.2.5.jar  运行线程执行访问

    核心类Executor  可以设置验证auth()

    这个类也算是一个袖珍型Client了。可以看到这个框架的一个基本架构。比如通过localContext.setAttribute("http.cookie-store", cookieStore);传入

    cookie对象。

    协议的注册:

    SchemeRegistry schemeRegistry = new SchemeRegistry();
    org.apache.http.conn.scheme.SchemeSocketFactory plain = PlainSocketFactory.getSocketFactory();
    schemeRegistry.register(new Scheme("http", 80, plain));

    --httpclient-4.2.5.jar

    org.apache.http.auth  认证

    【英文学习:challenge询问

    AuthScheme认证协议或称认证模式

    Credentials证书接口,它有两个实现类NTCredentials和UsernamePasswordCredentials

    想继续了解,可以点这个链接  http://www.cnblogs.com/huqingyu/archive/2008/02/17/1071649.html

    org.apache.http.client

    这里主要是定义了一些异常类和接口。接口编程确实有它强大过人之处。

    org.apache.http.client.entity  http实体对象。http实体想像成容纳http数据的类。

    HttpEntity接口。http实体都实体了它。包括DecompressingEntity、DeflateStream、GzipDecompressingEntity、UrlEncodedFormEntity。

    #  org.apache.http.client.methods

    AbortableHttpRequest接口,实现它的类具有中断连接(访问)的功能

    HttpUriRequest接口,实现了uri功能。

    以HttpRequestBase为主类,其它的类直接或间接是它的子类。

    HttpEntityEnclosingRequestBase是HttpRequestBase的子类。

    #  org.apache.http.client.params  参数的定义和设置

    #  org.apache.http.client.protocol

    ClientContext接口,定义了一些对象的key,比如scheme-registry协议注册器,cookie相关对象,认证相关对象还有代理proxy

    ClientContextConfigurer类,保存客户机配置数据,不过我觉得它里面的方法是直接取"http.cookiespec-registry"的字符串,是不是取它实现的接口ClientContext里面的常量更合理些呢??

    这个包里面的很多类都是HttpRequestInterceptor的子类。这是个拦截器,它的拦截方法是process(HttpRequest request, HttpContext context)。

    这些拦截器的基本工作就是从context中取出相关的配置对象进行处理,把相关信息放到request的header里面去。

    RequestAcceptEncoding 接受的编码集
    RequestAddCookies 加入cookie
    RequestAuthCache 加入认证
    RequestAuthenticationBase 认证的基类
    RequestClientConnControl 连接控制
    RequestDefaultHeaders 加入默认的请求头
    RequestProxyAuthentication 代理认证,继承自RequestAuthenticationBase
    RequestTargetAuthentication 目标主机认证,继承自RequestAuthenticationBase

    最后剩下3个response拦截器(HttpResponseInterceptor),实现的主要功能是,对cookie的保存,和对各种压缩流的解压工作。

    ResponseAuthCache 这个不推荐用了,不说了
    ResponseContentEncoding 对gzip和deflate格式的流解压
    ResponseProcessCookies 保存cookie

     #  org.apache.http.client.utils

     CloneUtils  克隆类,它是通过反射调用了一个对象自身的clone方法。好像不怎么实用。

    HttpClientUtils  关闭response流,关闭client连接。

    Idn接口  对字符串进行Unicode编码。

    JdkIdn  Idn的实现类

    Rfc3492Idn  Idn的实现类

    Punycode  对上面两个实现类的封装,如果第一个类用不上,就使用第二个。

    还有3个URI处理类URIBuilder、URIUtils、URLEncodedUtils

     #  org.apache.http.conn

    这个包里多是接口和异常,不太明白,草草看了下。

    #  org.apache.http.conn.params

    这个包好多类都不推荐了。

    # org.apache.http.conn.routing

    关于路由的包

    #  org.apache.http.conn.scheme

    PlainSocketFactory  简单socket工厂

    Scheme  协议http或是https什么的

    SchemeRegistry  协议注册器,有个map存Scheme

    --httpcore-4.2.4.jar

    【英文学习:Catalog 目录,集合,收录】

    处理gzip流

    String body = EntityUtils.toString(new GzipDecompressingEntity(res.getEntity()));

  • 相关阅读:
    C#数组的Map、Filter、Reduce操作
    Safari中的input、textarea无法输入的问题
    小练手:用HTML5 Canvas绘制谢尔宾斯基三角形
    Web前端页面的浏览器兼容性测试心得(三)总结一些IE8兼容问题的解决方案
    大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
    Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境
    Web前端页面的浏览器兼容性测试心得(一)搭建测试用本地静态服务器
    CSS3、SVG、Canvas、WebGL动画精选整理
    利用JS代码快速获得知网论文作为参考文献的引用文本
    使用Node.js快速搭建简单的静态文件服务器
  • 原文地址:https://www.cnblogs.com/angelshelter/p/3772370.html
Copyright © 2011-2022 走看看