- 浏览: 332205 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
helloworldlove:
Axis_UNZIP_PATH\Axis-version\we ...
3步把您的java程序转换为webservice -
hcqenjoy:
这个工具能再提供下吗 已经没办法下载了 谢谢
汉化 Flex Builder 3 帮助文档 -
NASa_CJ:
String source = HttpClientExamp ...
利用HttpClient获取网页内容 -
zlsj80:
下载地址无效了,楼主修正一下吧
汉化 Flex Builder 3 帮助文档 -
fykyx521:
下载地址都不能用了,是不过时了
汉化 Flex Builder 3 帮助文档
HTTP协议是目前互联网上最重要的协议,许多软件与服务都需要依赖HTTP协议。
虽然java.net这个package中包含了对HTTP的基本支持,但还有很多高级和复杂的功能无法实现,这不能不说是一个遗憾。
HttpClient作为Apache的开源项目项目之一,为基于HTTP协议的操作提供了强大的客户端执行支持,最新的版本为3.0RC3。
下面通过一个例子简要展示HttpClient的使用方法:
--------------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
JAVA手机网[www.cnjm.net]
import java.io.InputStream;import java.io.InputStreamReader;
iimport java.io.UnsupportedEncodingException;
import java.util.*;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
/**
* @author steven
*/
public class HttpClientExample {
//获得ConnectionManager,设置相关参数
private static MultiThreadedHttpConnectionManager manager =
new MultiThreadedHttpConnectionManager();
private static int connectionTimeOut = 20000;
private static int socketTimeOut = 10000;
private static int maxConnectionPerHost = 5;
private static int maxTotalConnections = 40;
//标志初始化是否完成的flag
private static boolean initialed = false;
//初始化ConnectionManger的方法
public static void SetPara() {
manager.getParams().setConnectionTimeout(connectionTimeOut);
manager.getParams().setSoTimeout(socketTimeOut);
manager.getParams()
.setDefaultMaxConnectionsPerHost(maxConnectionPerHost);
manager.getParams().setMaxTotalConnections(maxTotalConnections);
initialed = true;
JAVA手机网[www.cnjm.net]
}//通过get方法获取网页内容
public static String getGetResponseWithHttpClient(String url, String encode) {
JAVA手机网[www.cnjm.net]
HttpClient client = new HttpClient(manager);if (initialed) {
JAVA手机网[www.cnjm.net]
HttpClientExample.SetPara();}
GetMethod get = new GetMethod(url);
get.setFollowRedirects(true);
JAVA手机网[www.cnjm.net]
String result = null;StringBuffer resultBuffer = new StringBuffer();
try {
client.executeMethod(get);
JAVA手机网[www.cnjm.net]
JAVA手机网[www.cnjm.net]
//在目标页面情况未知的条件下,不推荐使用getResponseBodyAsString()方法//String strGetResponseBody = post.getResponseBodyAsString();
BufferedReader in = new BufferedReader(
new InputStreamReader(
get.getResponseBodyAsStream(),
get.getResponseCharSet()));
String inputLine = null;
while ((inputLine = in.readLine()) != null) {
resultBuffer.append(inputLine);
JAVA手机网[www.cnjm.net]
resultBuffer.append("\n");}
in.close();
result = resultBuffer.toString();
//iso-8859-1 is the default reading encode
result = HttpClientExample.ConverterStringCode(resultBuffer.toString(),
get.getResponseCharSet(),
encode);
} catch (Exception e) {
e.printStackTrace();
result = "";
JAVA手机网[www.cnjm.net]
} finally {get.releaseConnection();
return result;
}
}
public static String getPostResponseWithHttpClient(String url,
String encode) {
HttpClient client = new HttpClient(manager);
JAVA手机网[www.cnjm.net]
if (initialed) {
HttpClientExample.SetPara();
}
JAVA手机网[www.cnjm.net]
PostMethod post = new PostMethod(url);post.setFollowRedirects(false);
StringBuffer resultBuffer = new StringBuffer();
String result = null;
try {
client.executeMethod(post);
BufferedReader in = new BufferedReader(
JAVA手机网[www.cnjm.net]
new InputStreamReader(post.getResponseBodyAsStream(),
post.getResponseCharSet()));
String inputLine = null;
JAVA手机网[www.cnjm.net]
while ((inputLine = in.readLine()) != null) {resultBuffer.append(inputLine);
JAVA手机网[www.cnjm.net]
resultBuffer.append("\n");}
in.close();
//iso-8859-1 is the default reading encode
result = HttpClientExample.ConverterStringCode(resultBuffer.toString(),
post.getResponseCharSet(),
encode);
} catch (Exception e) {
e.printStackTrace();
result = "";
JAVA手机网[www.cnjm.net]
} finally {post.releaseConnection();
JAVA手机网[www.cnjm.net]
return result;}
}
public static String getPostResponseWithHttpClient(String url,
String encode,
NameValuePair[] nameValuePair) {
HttpClient client = new HttpClient(manager);
if (initialed) {
HttpClientExample.SetPara();
}
JAVA手机网[www.cnjm.net]
PostMethod post = new PostMethod(url);post.setRequestBody(nameValuePair);
post.setFollowRedirects(false);
JAVA手机网[www.cnjm.net]
String result = null;
StringBuffer resultBuffer = new StringBuffer();
try {
client.executeMethod(post);
BufferedReader in = new BufferedReader(
new InputStreamReader(
post.getResponseBodyAsStream(),
post.getResponseCharSet()));
String inputLine = null;
while ((inputLine = in.readLine()) != null) {
JAVA手机网[www.cnjm.net]
resultBuffer.append(inputLine);resultBuffer.append("\n");
}
in.close();
JAVA手机网[www.cnjm.net]
//iso-8859-1 is the default reading encode
result = HttpClientExample.ConverterStringCode(resultBuffer.toString(),
post.getResponseCharSet(),
encode);
} catch (Exception e) {
e.printStackTrace();
JAVA手机网[www.cnjm.net]
result = "";} finally {
post.releaseConnection();
return result;
}
}
JAVA手机网[www.cnjm.net]
private static String ConverterStringCode(String source, String srcEncode, String destEncode) {if (src != null) {
try {
return new String(src.getBytes(srcEncode), destEncode);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
} else {
return "";
JAVA手机网[www.cnjm.net]
}}
}
--------------------------------------------------------------------------------
之后,就可以通过下面的代码获得目标网页:
String source = HttpClientExample.getGetResponseWithHttpClient("www.sina.com.cn", "GBK");
注意,在默认情况下,HttpClient的Request的Head中
User-Agent的值是Jakarta Commons-HttpClient 3.0RC1,如果需要改变它(例如,变为Mozilla/4.0),必须在调用之前运行如下语句:
System.getProperties().setProperty("httpclient.useragent", "Mozilla/4.0");
评论
1 楼
NASa_CJ
2010-06-20
String source = HttpClientExample.getGetResponseWithHttpClient("www.sina.com.cn", "GBK");
应该改为:
String source = HttpClientExample.getGetResponseWithHttpClient("http://www.sina.com.cn", "GBK");
应该改为:
String source = HttpClientExample.getGetResponseWithHttpClient("http://www.sina.com.cn", "GBK");
发表评论
-
Java 5.0 多线程编程实践
2006-01-23 13:20 757<noscript type="text/ja ... -
web开发框架——JSF开发实战
2006-01-23 20:01 1402JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最 ... -
Tomcat 的数据库连接池设置与应用
2006-01-23 20:28 7551.将数据库驱动程序的JAR文件放在Tomcat的 commo ... -
Eclipse Plugins Manager Beta 0.1 (Link's Only) 发布
2006-03-18 17:11 775<noscript type="text/ja ... -
常青图书管理系统 BETA V0.1
2006-03-19 15:03 832<noscript type="text/ja ... -
Java程序的性能优化
2006-03-19 15:15 796<noscript type="text/ja ... -
Java中四种XML解析技术之不完全测试
2006-03-20 12:16 689<noscript type="text/ja ... -
解决Tomcat中文乱码问题
2006-03-26 22:58 856一、中文问题的来源 计算机最初的操作系统支持的编码是单 ... -
Swing技巧. 设置全局字体(sun jdk)
2006-04-02 14:04 1326S ... -
Dom4j 使用简介
2006-04-05 20:19 662DOM4J是dom4j.org出品的一个开源XML解析包 ... -
Java手机技术 之 J2ME及其基本慨念
2006-04-06 12:42 709如果您曾经http://www.javasoft.com ;网 ... -
Java手机技术 之 J2ME新手入门要点
2006-04-06 12:50 994一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
JAVA设计模式系列之Singleton模式
2006-04-06 13:18 813单态定义: Singleton模式主要作用是保证在Java应 ... -
高手指点你实战体会Java的多线程编程
2006-04-06 13:39 828在 Java 程序中使用多线程要比在 C 或 C++ 中容 ... -
Java基础--JSP应用语法详解大全
2006-04-06 13:49 8821)HTML注释: 可以用注释内容,也可以用表达式. 2) ... -
javamail使用完全手册
2006-04-08 20:44 8621,哪里是开始:初始环境,安装好你的j2sdk和你的web服务 ... -
JavaMail通过sina的smtp验证
2006-04-08 20:47 1106import javax.mail.*;import java ... -
用javamail发送邮件
2006-04-08 20:49 987用javamail发送邮件 aistill(原作) ... -
修改后可以发送附件、抄送、密送的javabean
2006-04-08 20:51 920/**A ... -
javamail实现smtp身份认证
2006-04-08 20:57 938现在大多 ...
相关推荐
以下是一个简单的示例,展示如何使用HttpClient获取网页内容,然后用Jsoup解析: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache....
- 将HttpClient获取的HTML内容传递给Jsoup的parse方法,得到Document对象。 - 利用Jsoup的CSS选择器和数据提取功能,从Document对象中选取并提取需要的数据。 - 根据需求,可以进一步处理这些数据,如存储到...
在IT行业中,获取网页数据是常见的任务之一,用于数据分析、信息抓取或自动化测试等场景。HttpClient和HtmlParser是两个非常实用的Java库,分别用于处理HTTP通信和解析HTML内容。下面将详细介绍这两个库以及如何结合...
本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...
本例子源码展示了如何利用Apache HttpClient库来实现这一功能,同时也对比了另一种常见的网络访问方式——URLConnection。以下是对这两个方法的详细解释。 首先,我们来看`HttpClient`的使用。Apache HttpClient是...
1.6.1发送get请求获取网页内容 HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); //使用GET方法,如果服务器...
在实际应用中,HttpClient可以用于获取API数据、网页抓取、自动化测试等多种场景。为了确保数据安全,可能还需要处理HTTPS连接,验证服务器证书,或者使用HTTP基本认证、OAuth等身份验证机制。 总之,HttpClient是...
【标题】"httpclient 静态化网站 project"是一个基于Apache HttpClient库的项目,旨在实现网站内容的抓取和静态化。HttpClient是一个强大的HTTP客户端编程工具包,它允许开发者在Java环境中执行HTTP请求,获取网页...
1. **数据抓取**:通过发送HTTP请求获取网页内容,然后使用HTML解析库(如Jsoup)解析数据。 2. **登录和cookie管理**:处理登录过程,保存和发送cookie,以便于访问需要登录的页面。 3. **模拟浏览器行为**:设置...
- 对于大型网站,可以考虑分布式爬虫设计,利用多台机器并行抓取。 总之,HttpClient和Jsoup是Java爬虫开发中的两个强大工具,它们结合使用能有效地抓取和解析网页信息。理解它们的工作原理和用法,对于构建高效的...
在Java应用中,HttpClient常用于网页抓取、API调用以及自动化测试等场景。 本压缩包文件"httpClient"很可能包含了HttpClient库所需的必备JAR文件,这些文件通常包括HttpClient的核心库、依赖的第三方库以及可能的...
Jsoup+httpclient模拟登陆和抓取页面.pdf
总之,利用HttpClient和HtmlParser(如Jsoup)可以方便地构建一个Java网络爬虫,用于抓取和分析网页信息。在"SearchEngine"项目中,你可以根据需求定制爬虫,实现搜索引擎的功能,高效地获取和处理大量网页数据。
在使用HttpClient获取网页内容时,通常会涉及到设置请求方式,例如GET方式,它是最常见的HTTP请求方式之一。通过HttpClient对象可以发送HTTP请求,并接收响应。在处理响应时,可以获取编码信息,设置代理服务器,并...
在Web开发中,HttpClient常常被用于网页抓取、API调用和其他网络通信任务。本篇文章将深入探讨重新封装的HttpClient类,以及如何利用它进行高效且灵活的网络请求。 首先,我们来看一下`HttpClient`类的基本用法。...
本主题主要关注如何使用`httpclient4.*`库来绕过验证码获取公司信息,以及结合`jsoup`解析静态网页信息和`htmlUnit`处理动态网站的抓取。以下是对这些知识点的详细说明: 1. **httpclient4.***: Apache HttpClient...
在实际应用中,开发者通常会将这三个JAR文件加入到项目类路径中,以利用HttpClient库的功能。例如,通过HttpClient可以创建一个HTTP GET请求来获取网页内容,或者使用POST方法发送JSON或XML数据到服务器。HttpCore则...
《HttpClient 4.3.5:官方...通过了解其核心特性,结合实际案例,开发者可以更高效地利用HttpClient进行网络通信,提升应用的网络性能。在实际开发中,根据项目需求灵活运用这些特性,可以解决各种复杂的HTTP交互问题。
2. **爬虫程序**:抓取网页内容,进行数据分析。 3. **自动化测试**:模拟用户行为,进行接口测试或系统集成测试。 4. **数据同步**:在分布式系统中,实现节点间的数据同步。 总结,HttpClient 4.5.6 是一个强大且...
这篇博客“HttpClient4模拟登录回贴”显然探讨了如何利用HttpClient4库进行网络模拟登录以及在特定网站上发布帖子。HttpClient4适用于各种场景,如自动化测试、数据抓取等,它允许开发者构建复杂的HTTP交互逻辑。 ...