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()));
httpclient学习(原创)的更多相关文章
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
- HttpClient 学习整理【转】
转自 http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html HttpClient 是我最近想研究的东西,以前想过的一些应用没能有很好的 ...
- HttpClient 学习整理 (转)
source:http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html HttpClient 是我最近想研究的东西,以前想过的一些应用没能 ...
- httpclient 学习
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基 ...
- HttpClient学习之 客户端HTTP编程入门
说明 本文存在的原因,是想深入的学习下HttpClient.对应的网址是: http://hc.apache.org/httpcomponents-client-4.5.x/primer.html h ...
- HttpClient学习研究---第二章:连接管理
第二章.Connection management连接管理2.1. 2.1.Connection persistence连接持久性The process of establishing a conne ...
- HttpClient学习(四)—— 关于Http
一.Http状态码 状态码分类 100 ~ 199 信息提示 200 ~ 299 成功 300 ~ 399 重定向 400 ~ 499 客户端错误 500 ~ 599 服务端错误 常见状态码 200 ...
- httpclient学习
httpclient入门: http://www.ibm.com/developerworks/cn/opensource/os-httpclient/ httpclient证书导入:http: ...
- HTTPCLIENT 学习 (1) 入门
早就如雷贯耳它的大名,却一直不曾相见,昨天下载下来,今天终于测试了一把,用的官网的QUICK START例子,来访问我自己以前开发过的WEB程序,因为这个网站恰好有一个写好的通过POST请求验证用户名 ...
随机推荐
- centos7.3安装zend guard loader3.3 for php5.6
1 下载zend guard loader 到这里选择自己的系统版本 我选择的64位 for php5.6.3 linux http://www.zend.com/en/products/load ...
- mysql:rand()产生随机整数,CONCAT拼接时间字符串
用存储过程插入测试数据,如果不想update_time都一样,可以进行随机字符串拼接:2月随机1天,小时随机 CONCAT('2017-02-',FLOOR(1 + (RAND() * 28)),' ...
- HTML 标签说明
标签 描述 <!--...--> 定义注释. <!DOCTYPE> 定义文档类型. <a> 定义锚. <abbr> 定义缩写. <acronym ...
- python模块说明
1.模块(变量,函数,类,实现一个功能) 包:用来从逻辑上组织模块,本质是一个目录(必须带有__init__.py) 2.导入方法 import module_alex from module_ale ...
- nodejs文件操作笔记
nodejs添加了流的概念,通过流操作文件如行云流水,比早前便利畅快多了. 先来第一个例子,我们建一个stream.js文件,里面内容如下: var fs = require("fs&quo ...
- C++的空指针、野指针和指针赋值NULL.md
1.空指针和野指针 http://blog.csdn.net/fu_zk/article/details/21030607 空指针常量 一个表示0值的整数常量,叫做空指针常量.例如:0.0L.1-1( ...
- sql查询job
use msdb go --if object_id('tempdb..#SqlAgentJob') is not null -- drop table #SqlAgentJob --go decla ...
- VNC连接黑屏的问题
今天尝试在CentOS上安装一个VNC Server.CentOS5 已经自带了VNC,默认也已经安装了,只要配置一下就可以了(如果没有安装,可以:yum install vnc vncserver安 ...
- redis安装和命令使用
前言: redis是一个key-value的存储系统,value支持string.list.set.zset.hash五种类型,且支持数据的本地存储 一.安装redis 前提:linux下需要安装 ...
- 通过Github Pages在线查看百度前端技术学院完成的任务成果
前言 .note-content {font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHe ...