HttpClient源代码分析之HttpClient模块
来源:互联网 发布:淘宝产品视频几分钟 编辑:程序博客网 时间:2024/06/07 12:11
HttpCommon源码下载地址: http://hc.apache.org/httpclient-3.x/scm-usage.html
HttpClient源代码下载地址[常用到HttpClient 4.3 (GA)和HttpCore 4.3 (GA)]: http://hc.apache.org/downloads.cgi
正文内容摘自: http://www.cnblogs.com/yakov/archive/2011/12/02/httpclient.html
HttpClient源代码分析之HttpClient模块
httpcomponents-client本身包含了四个部分,正如它的pom.xml配置文件中所写的,如下:
<modules>
<module>httpclient</module>
<module>httpmime</module>
<module>httpclient-cache</module>
<module>httpclient-osgi</module>
</modules>
下面分别就这四个模块进行源代码的分析和说明.
httpclient模块:
这个模块是httpcomponent-client的核心,很多http相关的接口和功能都在这个模块中实现。下面的列表显示了httpcomponent-client包含的package。
package名称描述org.apache.http.annotation关于注记的一些函数包org.apache.http.auth在client端使用HTTP验证server的APIorg.apache.http.auth.params配置HTTP验证类的参数org.apache.http.clientclient端HTTP通信的APIorg.apache.http.client.entity其他依赖于HttpClient特殊特征的HTTP实体实现org.apache.http.client.methods针对多种HTTP方法如GET和POST等的Request的实现org.apache.http.client.params用来配置默认的HttpClient实现的参数org.apache.http.client.protocolHTTP状态和认证管理的其他request和response拦截器org.apache.http.client.utilsHttpClient的辅助和公用类org.apache.http.conn为打开和管理client端HTTP连接提供接口和实现的client端连接管理和处理APIorg.apache.http.conn.paramsHTTP连接和连接管理相关的类的配置参数org.apache.http.conn.routingclient端路由表现和追踪APIorg.apache.http.conn.schemeScheme类表示了一个协议格式,如"HTTP"或者"HTTPS",它包含了许多协议属性,如默认端口和给指定协议创建Sockets的Socket工厂org.apache.http.conn.sslTLS/SSL的特别APIorg.apache.http.conn.utilHTTP连接的公用类集合org.apache.http.cookieclient端通过cookie管理状态的APIorg.apache.http.cookie.paramsHTTP状态管理类的配置参数org.apache.http.impl.authorg.apache.http.auth包中接口的默认实现org.apache.http.impl.clientorg.apache.http.client包中接口的默认实现org.apache.http.impl.connorg.apache.http.conn包中接口和相关类的默认实现org.apache.http.impl.conn.tsccm线程安全的client连接管理的实现org.apache.http.impl.cookieorg.apache.http.cookie包中接口的默认实现
上面简单描述了各个package的功能,具体的package情况会如下所述,这里会针对每个包中的类图和时序图,以及用到的设计模式进行简单的分析说明。
package: org.apache.http.annotation
这个package中包含了4个Annotation Type的接口。主要用于注记域,方法或者类。
GuardedBy这个注记标注过的域或者方法,只有只有特殊锁的时候才可以被访问,这个锁可能是一个内建的锁,如同步锁,也可能是一个java.util.concurrent.LockImmutable这个注记标注过的类是不可变的NoThreadSafe这个注记标注过的类是非线程安全的ThreadSafe这个注记标注过的类是线程安全的package: org.apache.http.auth
这个package中包含了4个接口,8个类和3个异常类。主要用于client端的HTTP认证。
接口 AuthScheme这个借口描述了一个抽象的面向认证的响应格式AuthSchemeFactoryAuthScheme的工厂方法ContextAwareAuthScheme这个借口描述了一个扩展的认证格式,需要访问HTTPContext来产生认证字符串Credentials这个接口描述了一系列包含了用来建立用户身份的安全委托和密码的正式类 AUTHHTTP认证相关的常量和静态辅助信息AuthSchemeRegister认证格式注册,用来获取针对特定认证类型的一致认证格式的实现AuthScope这个类描述了证书使用的认证范围包括主机名,端口,域名,认证格式名等AuthState这个类提供了有关认证过程中状态的详细信息BasicUserPrincipalHTTP认证的基本的用户委托NTCredentials包含Windows特定属性例如用户所属域的名字的Microsoft Windows平台的证书实现NTUserPrincipalMicrosoft Windows特有的用户委托实现UsernamePasswordCredentials基于用户名和密码对的简单证书的实现异常类 AuthenticationException认证过程失败时抛出InvalidCredentialsException用来响应认证请求的认证证书是无效的时候抛出MalformedChallengeException在特定语境中,认证的方法是无效的或者非法的时候抛出下面是这个包的类图
package: org.apache.http.auth.params
下面是这个包的类图
package: org.apache.http.client
类图如下
package: org.apache.http.client.entity
类图如下:
package: org.apache.http.client.methods
类图如下
package: org.apache.http.client.params
package: org.apache.http.client.protocol
类图如下
package: org.apache.http.client.utils
类图如下
package: org.apache.http.conn
类图如下
package: org.apache.http.conn.params
类图如下
package: org.apache.http.conn.routing
类图如下
package: org.apache.http.conn.scheme
package: org.apache.http.conn.ssl
类图
package: org.apache.http.conn.util
类图
package: org.apache.http.cookie
类图
package: org.apache.http.cookie.params
类图
- HttpClient源代码分析之HttpClient模块(转)
- HttpClient源代码分析之HttpClient模块
- HttpClient源代码分析之HttpClient模块
- Android-Async-httpClient 开源代码分析
- HttpClient 分析
- HttpClient
- HttpClient
- httpClient
- HttpClient
- HttpClient
- HttpClient
- HttpClient
- HttpClient
- HttpClient
- HttpClient
- HttpClient
- httpclient
- httpclient
- MySQL技术内幕-InnoDB存储引擎 笔记
- Java中的getResourceAsStream有以下几种
- 用input(class=file)上传图片怎样做到只读
- 13个Python图形库
- proGuard试用小结
- HttpClient源代码分析之HttpClient模块
- DeviceIoControl的使用说明
- C/C++继承方式--形象化表述
- ORA-01810: 格式代码出现两次
- squid代理服务器基本配置(二)
- 如何指定SO的搜索路径
- Object-c常用函数和常数
- [基础]SQL UNION 和 UNION ALL 操作符
- hibernate 比较时间大小; 创建别名;