Java HttpClient(一:基础对象、类说明)

这篇博客介绍了Apache HttpClient,它是Java中用于HTTP访问的组件,旨在替代JDK的基础HTTP功能。HttpClient支持HTTP/1.1,提供了丰富的功能,如认证、状态管理和连接管理。文章详细讲解了HttpClient的特点、基本使用步骤、请求执行过程中的相关对象,如请求对象、响应对象、Header、Entity,以及HttpClient的线程安全、资源释放和处理重定向等。
摘要由CSDN通过智能技术生成

参考文献:http://hc.apache.org/
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/
http://hc.apache.org/httpcomponents-client-ga/examples.html

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。

1. HttpComponents

Apache HttpComponents项目旨在创建、维护一组低层次的用于Java的HTTP及其先关协议组件。

HttpComponents可用于:

  1. HTTP client应用;
  2. HTTP Server应用,例如web浏览器、web爬虫,HTTP代理,Web服务层库,或是基于HTTP的扩展协议。

HttpComponents 架构
HttpComponents 包括:HttpCoreHttpClientAsynch HttpClient 、Commons HttpClient(被废弃的代码,不建议使用)

2. HttpClient简介

HTTPClient 是兼容HTTP/1.1的、基于HTTPCore的HTTP agent实现,支持认证、HTTP状态维护、HTTP连接管理。HTTPClient 是为了取代
Commons HttpClient 3.x而存在的,另外,强烈建议使用Commons HttpClient 的用户升级到HTTPClient。

虽然java.net包中提供了基础的HTTP方法,但是缺乏伸缩性、同时缺乏完善的功能。HttpClient用于填补这个空白。

2.1 特点

2.1.1 特点

  1. Httpclient基于HttpCore实现;
  2. 基于典型的阻塞IO;
  3. 不处理具体的Http Content(不对Http 内容进行解析,这应该由应用解析处理)

注意:
4. HttpClient并不是一个浏览器,HttpClient是一个Http client端的开发库。
5. HttpClient只是用于发送、接收Http信息,并不会帮你处理信息里面的内容。其实,它也不知道怎么处理。比如服务器给你回复了一个response,里面有个1,这是表示1块钱,还是1百万,这是具体的调用应用才直到解析的。而HttpClient是一个通用的库。它存在的目的是你不用去使用socket,去连接server,一点一点拼装消息体。另外,Httpclient还有复杂的功能,如池化连接等。

2.1.2 基本使用步骤

使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。(需要导入httpclient-Versin.jar, httpcore-version.jar两个包。在使用过程中,有时候会抛出logging class not found 异常,这时可将commons-logging包导入工程即可)

  1. 创建HttpClient对象。

  2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

  3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

  4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

  5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

  6. 释放连接。无论执行方法是否成功,都必须释放连接

2.2 请求执行过程与相关对象

HttpClient的最基本使用方法是:创建请求对象,使用httpclient将该请求转交给Server,然后返回一个 response对象或是抛出异常。

上述过程使用代码就是:

CloseableHttpClient httpclient = HttpClients.createDefault();

//创建请求对象
HttpGet httpget = new HttpGet("http://localhost/");

//httpclient和server通信,将该请求转交给Server,并返回reposne
CloseableHttpResponse response = httpclient.execute(httpget);
try {
    <...>
} finally {
    response.close();
}

2.2.1 请求对象:HttpXXX(根据请求的方法进行分类,如HttpGet,HttpPost)

HttpClient支持 HTTP/1.1规范定义的所有方法:GET, HEAD, POST, PUT, DELETE, TRACE 和OPTIONS。不同的方法,在HttpClient中,使用不同的类进行封装,代表不同的请求方法,对应的是HttpGet,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值