- 浏览: 324618 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
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 740<noscript type="text/ja ... -
web开发框架——JSF开发实战
2006-01-23 20:01 1374JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最 ... -
Tomcat 的数据库连接池设置与应用
2006-01-23 20:28 7341.将数据库驱动程序的JAR文件放在Tomcat的 commo ... -
Eclipse Plugins Manager Beta 0.1 (Link's Only) 发布
2006-03-18 17:11 750<noscript type="text/ja ... -
常青图书管理系统 BETA V0.1
2006-03-19 15:03 811<noscript type="text/ja ... -
Java程序的性能优化
2006-03-19 15:15 771<noscript type="text/ja ... -
Java中四种XML解析技术之不完全测试
2006-03-20 12:16 664<noscript type="text/ja ... -
解决Tomcat中文乱码问题
2006-03-26 22:58 838一、中文问题的来源 计算机最初的操作系统支持的编码是单 ... -
Swing技巧. 设置全局字体(sun jdk)
2006-04-02 14:04 1293S ... -
Dom4j 使用简介
2006-04-05 20:19 642DOM4J是dom4j.org出品的一个开源XML解析包 ... -
Java手机技术 之 J2ME及其基本慨念
2006-04-06 12:42 689如果您曾经http://www.javasoft.com ;网 ... -
Java手机技术 之 J2ME新手入门要点
2006-04-06 12:50 971一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
JAVA设计模式系列之Singleton模式
2006-04-06 13:18 788单态定义: Singleton模式主要作用是保证在Java应 ... -
高手指点你实战体会Java的多线程编程
2006-04-06 13:39 805在 Java 程序中使用多线程要比在 C 或 C++ 中容 ... -
Java基础--JSP应用语法详解大全
2006-04-06 13:49 8621)HTML注释: 可以用注释内容,也可以用表达式. 2) ... -
javamail使用完全手册
2006-04-08 20:44 8411,哪里是开始:初始环境,安装好你的j2sdk和你的web服务 ... -
JavaMail通过sina的smtp验证
2006-04-08 20:47 1071import javax.mail.*;import java ... -
用javamail发送邮件
2006-04-08 20:49 966用javamail发送邮件 aistill(原作) ... -
修改后可以发送附件、抄送、密送的javabean
2006-04-08 20:51 890/**A ... -
javamail实现smtp身份认证
2006-04-08 20:57 914现在大多 ...
相关推荐
1.6.1发送get请求获取网页内容 HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); //使用GET方法,如果服务器...
httpClient和htmlparse获取网页数据使用jar
利用httpClient+jsoup技术进行网页数据的获取,以网易贵金属为例~
利用HttpClient抓取网页中简单的数据,数据可存入数据库进行分析
超级课程表是利用httpclient模拟登录 ,抓取高校教务系统的网页进行解析的 ,就可以做一下修改,这里是基本的代码
超级课程表是利用httpclient模拟登录 ,抓取高校教务系统的网页进行解析的 ,就可以做一下修改,这里是基本的代码
网页抓取:使用Java的网络编程库(如HttpURLConnection、Apache HttpClient等)来发送HTTP请求,获取网页的HTML内容。 网页解析:利用Java的HTML解析库(如Jsoup、HtmlCleaner等)来解析网页的HTML结构,提取出所需...
首先,使用HttpClient发送GET或POST请求获取网页内容。然后,利用HTML解析库如AngleSharp或HtmlAgilityPack解析网页结构,通过CSS选择器或XPath定位目标数据。提取数据后,可以将其保存至本地文件、数据库或进行...
用户登录网站获取cookie,通过携带cookie替换指定成绩页面,解析页面内容获取成绩 详细说明: 用户(学生)登录系统产生一个cookie,提取cookie,之后的每次登陆都需要携带coolie参数 逐步升级到指定网页,通过API...
利用Redis实现分布式抓取,参考gecco-redis 支持结合Spring开发业务逻辑,参考gecco-spring 支持htmlunit扩展,参考gecco-htmlunit 支持插件扩展机制 支持下载时UserAgent随机选取 支持下载代理服务器随机选取 Gecco是...
|--Activity不允许横竖屏切换 |--Activity常用小技巧 ...|--获取网页的源码 |--读取外部资源的文件3种方式 |--读取手机内的短信 |--通信之Application实现应用全局通信 |--重启adb |--隐式转换 页面 |--震动效果的实现
7、通过HttpClient从指定server获取数据 13 8、隐藏小键盘 13 9、响应Touch 15 10、Activity间的通信 15 1、Bundle传值 15 2、利用startActivityForResult与onActivityResult方法 16 11、使程序完全退出 18 12、列出...
内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性...
Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...
使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...
使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...
使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...
使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache ...