HttpClient:高效HTTP客户端编程工具包

需积分: 50 5 下载量 40 浏览量 更新于2024-09-09 收藏 209KB PDF 举报
"HttpClient是Apache Jakarta Common下的一个用于处理HTTP请求和响应的开源工具,它提供了高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包。HttpClient不仅支持HTTP协议的基本功能,还支持HTTP协议的最新版本和建议。该库被广泛应用于各种项目,如Cactus和HTMLUnit。HttpClient的最新版本在2010年8月时为4.0.1,依赖于HttpCore、commons-codec和commons-logging等项目,如果需要处理复杂的MIME类型,还需要HttpMime。使用HttpClient时,需要引入相应的jar包。" HttpClient是Java开发者用于执行HTTP请求的强大工具,相较于JDK自带的`java.net`包中的`HttpURLConnection`,HttpClient提供了更为丰富和灵活的功能。它不是一个完整的浏览器实现,而是专注于处理HTTP通信的类库。 在了解HttpClient之前,先来看看JDK中处理HTTPURL的API。最基本的获取网页内容的方法是使用`java.net.URL`和`BufferedReader`,但这种方式较为原始,不支持异步操作,也不方便处理复杂的HTTP请求。`URLConnection`是JDK提供的基础HTTP连接类,可以打开到指定URL的连接,进行读写操作。而`HttpURLConnection`是`URLConnection`的子类,专门处理HTTP协议,提供了设置请求方法(如GET、POST)、设置请求头、处理响应头等功能。 接下来,我们将深入HttpClient的使用。HttpClient通过`HttpGet`和`HttpPost`类来发送GET和POST请求。使用GET方式向后台递交请求时,只需要创建`HttpGet`对象,设置URL,然后用`HttpClient`的`execute`方法执行请求。自动获得响应的编码信息可以通过读取响应头的`Content-Type`字段来实现。设置代理服务器可以通过`HttpHost`对象和`RequestConfig`来完成,这使得在受限制的网络环境中也能正常访问网站。HttpClient还能处理重定向,通过检查响应状态码和`Location`头来自动跳转。对于Cookie管理,HttpClient支持自动处理,可以保存和发送Cookie,以维持会话状态。 HttpClient的入门需要导入必要的jar包,包括HttpClient主库、HttpCore、HttpMime(如果需要处理复杂MIME类型)、commons-codec(编码解码)、commons-logging(日志处理)和commons-io(IO操作)。这些依赖库的版本应与HttpClient版本相匹配,以确保正确运行。 HttpClient是Java开发HTTP应用的重要工具,它的功能强大,易于使用,能够处理各种复杂的HTTP请求场景,是许多企业级应用的首选。通过学习和掌握HttpClient,开发者可以编写出更加高效和稳定的网络通信代码。
2016-05-23 上传
http工具类:package com.tpl.util; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * */ public class HttpClientUtil { public static void main(String arg[]) throws Exception { String url = "http://xxx/project/getxxx.action"; JSONObject params= new JSONObject(); List res=new ArrayList(); JSONObject params1 = new JSONObject(); // params1.put("code", "200"); // params1.put("phone", "13240186028"); res.add(params1); params.put("result", res); String ret = doPost(url, params).toString(); System.out.println(ret); } /** httpClient的get请求方式2 * @return * @throws Exception */ public static String doGet(String url, String charset) throws Exception { /* * 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:生成一个 HttpClinet 对象并设置相应的参数。 * 2:生成一个 GetMethod 对象并设置响应的参数。 3:用 HttpClinet 生成的对象来执行 GetMethod 生成的Get * 方法。 4:处理响应状态码。 5:若响应正常,处理 HTTP 响应内容。 6:释放连接。 */ /* 1 生成 HttpClinet 对象并设置参数 */ HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod getMethod = new GetMethod(url); // 设置 get 请求超时为 5 秒