页面抓取相关之HttpClient

来源:互联网 发布:oracle数据最大长度 编辑:程序博客网 时间:2024/05/21 06:38

百科名片

HTTP协议可能是现在Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.1.


环境配置

从官网下载httpclient,下载地址http://hc.apache.org/downloads.cgi; 之后将httpclient的jar包导入工程


主要应用的类

类名

作用

HttpClient

HttpClient代表了一个http的客户端,HttpClient接口定义了大多数基本的http请求执行行为.

HttpEntity

entity是发送或者接收消息的载体。entities 可以通过request和response获取到.

HttpConnection 

HttpConnection代表了一个http连接。



一个简单的工具类

/** * USER_AGENT:User-Agent属性值. *  * @since JDK 1.6 */public static final StringUSER_AGENT= "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2)";/** * ACCEPT_LANGUAGE:Accept-Language属性值. *  * @since JDK 1.6 */public static final StringACCEPT_LANGUAGE= "zh-cn,zh;q=0.5";/** * ACCEPT_CHARSET:Accept-Charset属性值. *  * @since JDK 1.6 */public static final StringACCEPT_CHARSET= "GB2312,utf-8;q=0.7,*;q=0.7";/** * pageDown: 获取网页代码 *  * @author liuqi_nad * @param url 网页的url * @return * @since JDK 1.6 */public static String pageDown(String url){HttpClient httpclient = new DefaultHttpClient();String pageContent = "";try {HttpGet httpget = new HttpGet(url);httpget.setHeader("User-Agent", USER_AGENT);httpget.setHeader("Accept-Language", ACCEPT_LANGUAGE);httpget.setHeader("Accept-Charset", ACCEPT_CHARSET);HttpResponse response = httpclient.execute(httpget);HttpEntity entity = response.getEntity();pageContent = EntityUtils.toString(entity);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {}return pageContent;}


这是一个非常简陋的工具类,里面使用了Httpclient的最基本用法。

首先创建Httpclient和HttpGet的实例,通过httpclient执行get请求

将返回的响应创建实体,最后通过提供的EntityUtils工具类将代码

打印出来