HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient,更多使用 HttpClient 的应用可以参见http://wiki.apache.org/jakarta-httpclient/HttpClientPowered。HttpClient 项目非常活跃,使用的人还是非常多的。目前 HttpClient 版本是在 2005.10.11 发布的 3.0 RC4 。
所需jar包:
com.springsource.org.apache.commons.httpclient-3.1.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.codec-1.3.0.jar
实例1:读取网页(HTTP/HTTPS)内容
package com.pica;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
public class HttpClientTest
{
/**
* 读取网页的(http/https)内容
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws HttpException, IOException
{
HttpClient client = new HttpClient();
//设置代理服务器地址和端口
//client.getHostConfiguration().setProxy("proxy_host_addr", 9500);
//使用get方法,如果服务器要通过https连接,将http换位https
HttpMethod method = new GetMethod("http://www.baidu.com");
//使用post方法
//HttpMethod pMethod = new PostMethod("http://www.baidu.com");
client.executeMethod(method);
//打印服务器返回的状态
System.out.println(method.getStatusLine());
//打印返回信息
System.out.println(method.getResponseBodyAsString());
//释放连接
method.releaseConnection();
}
}
结果太多,就不写了。
实例2:以GET或者POST方式向网页提交参数
package com.pica;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.PostMethod;
public class SimpleHttpClient
{
/**
* @param args
* @throws HttpException
* @throws IOException
*/
public static void main(String[] args) throws HttpException, IOException
{
HttpClient client = new HttpClient();//声明HttpClient对象
client.getHostConfiguration().setHost("www.imobile.com.cn", 80, "http");
HttpMethod method = new PostMethod(); //使用post方法提交数据
client.executeMethod(method); //打印服务器状态
System.out.println(method.getStatusLine());
System.out.println(method.getResponseBodyAsString().getBytes("gb2312"));
method.releaseConnection();//释放连接
}
}
正在学习中。。。。。。。。