HttpClient
### HttpClient 使用详解 #### 一、概述 `HttpClient` 是 Apache Jakarta Commons 提供的一个高效、功能丰富的 HTTP 客户端库。它支持多种 HTTP 方法,包括 GET、POST、PUT 和 HEAD 等,并且提供了对 HTTPS 的支持。此外,`HttpClient` 还支持重定向处理、代理服务器以及自定义请求头等功能。 #### 二、安装与配置 在使用 `HttpClient` 之前,首先需要下载并安装必要的组件: 1. **下载 HttpClient**:可以从官方网站 [http://jakarta.apache.org/commons/httpclient/downloads.html](http://jakarta.apache.org/commons/httpclient/downloads.html) 下载 HttpClient 的最新版本。 2. **下载 Commons Logging**:HttpClient 需要依赖 Commons Logging 来记录日志信息。可以访问 [http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi](http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi) 获取 commons-logging.jar 文件,并将其添加到 CLASSPATH 中。 3. **下载 Commons Codec**:虽然不是必须的,但如果需要使用某些编码解码功能(如 Base64 编码),则可以从 [http://jakarta.apache.org/site/downloads/downloads_commons-codec.cgi](http://jakarta.apache.org/site/downloads/downloads_commons-codec.cgi) 下载 commons-codec-1.x.jar 文件,并将其添加到 CLASSPATH 中。 #### 三、基本使用方法 下面详细介绍如何使用 HttpClient 发起 GET 和 POST 请求。 ##### 1. GET 请求 使用 HttpClient 发起 GET 请求的步骤如下: 1. **创建 HttpClient 实例**:通过 `new HttpClient()` 创建一个 HttpClient 对象。 2. **构建 GetMethod**:使用 `GetMethod(String url)` 构造函数创建 GetMethod 对象,参数为要访问的 URL。 3. **执行请求**:调用 `HttpClient` 的 `executeMethod(Method method)` 方法来执行 GetMethod 对象。执行后可以通过 `GetMethod.getStatusCode()` 获取响应状态码,判断请求是否成功。 4. **获取响应内容**:可以通过以下几种方式获取响应数据: - `getMethod().getResponseBody()`:返回响应体的 byte 数组。 - `getMethod().getResponseBodyAsString()`:返回字符串形式的响应体,默认采用系统的默认字符集进行解码。 - `getMethod().getResponseBodyAsStream()`:返回 InputStream 类型的响应体,适用于大文件或流式数据的读取。 5. **释放资源**:在完成请求后,需要调用 `getMethod().releaseConnection()` 方法来释放连接资源。 示例代码: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class HttpClientExample { public static void main(String[] args) throws Exception { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://example.com"); int statusCode = httpClient.executeMethod(getMethod); if (statusCode == 200) { String responseBody = getMethod.getResponseBodyAsString(); System.out.println("Response body: " + responseBody); } getMethod.releaseConnection(); } } ``` ##### 2. POST 请求 发起 POST 请求的过程与 GET 请求类似,但需要注意的是 POST 请求通常会携带数据: 1. **创建 HttpClient 实例**:同 GET 请求。 2. **构建 PostMethod**:使用 `PostMethod(String url)` 构造函数创建 PostMethod 对象。 3. **设置请求参数**:通过 `NameValuePair` 类来构建请求参数,并使用 `PostMethod.setRequestBody(NameValuePair[] params)` 设置请求体。 4. **执行请求**:同 GET 请求。 5. **获取响应内容**:同 GET 请求。 6. **释放资源**:同 GET 请求。 示例代码: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; public class HttpClientExample { public static void main(String[] args) throws Exception { HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod("http://example.com/post"); NameValuePair[] data = { new NameValuePair("name", "John"), new NameValuePair("age", "25") }; postMethod.setRequestBody(data); int statusCode = httpClient.executeMethod(postMethod); if (statusCode == 200) { String responseBody = postMethod.getResponseBodyAsString(); System.out.println("Response body: " + responseBody); } postMethod.releaseConnection(); } } ``` 以上就是使用 `HttpClient` 发起 GET 和 POST 请求的基本流程和示例代码。通过这些示例,你可以根据具体需求灵活地使用 `HttpClient` 来实现更复杂的网络请求处理。
简介:JDK提供的java.net的Http的基本功能不够丰富和灵活;
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议;
主要功能:
?实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
?支持自动转向
?支持 HTTPS 协议
?支持代理服务器等
HttpClient的安装:
?HttpClient 可以在http://jakarta.apache.org/commons/httpclient/downloads.html下载
?HttpClient 用到了 Apache Jakarta common 下的子项目 logging,你可以从这个地址http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi下载到 common logging,
从下载后的压缩包中取出 commons-logging.jar 加到 CLASSPATH 中
?HttpClient 用到了 Apache Jakarta common 下的子项目 codec,你可以从这个地址http://jakarta.apache.org/site/downloads/downloads_commons-codec.cgi 下载到最新的 common codec,
从下载后的压缩包中取出 commons-codec-1.x.jar 加到 CLASSPATH 中
GET方式:
1.创建HttpClient
2.创建GetMethod,传入url
3.用HttpClient协议的executeMethod方法执行method实例返回StatusCode,状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转
4.读response; GET方式取得目标内容的方法: 1)getResponseBody,返回目标的byte流
2)getResponseBodyAsString 返回String类型,返回字符串的编码会系统默认的返回编码,可能会出现乱码
3)getResponseBodyAsStream 这个方法对于目标地址中有大量数据需要传输是最佳的
5.释放连接;
POST方式 :
前2步同GET方式
将需要POST的每一项内容放在NameValuePair中
- showdance2012-12-03具有一定的参考价值,但是内容比较少,不是和初学。
- 初学者20122012-12-19只有步骤说明,没有具体代码,有一定参考价值,步骤是对的
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
- (源码)基于Java的DVD管理系统.zip