package httpclient;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
/**
* 使用 Apache HttpClient 工具模拟百度蜘蛛或浏览器抓取和解压gzip网页
* @author Ivan
*
*/
public class HttpClientTest {
/**
* @param args
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws HttpException, IOException {
HttpClient httpclient = new HttpClient();// 创建一个客户端,类似打开一个浏览器
// httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
// httpclient.getParams().setParameter("http.protocol.single-cookie-header",true);
GetMethod getMethod = new GetMethod("http://www.iteye.com");//http://itindex.net
// google
// getMethod.setRequestHeader("Host", "laohuang.iteye.com");
// getMethod.setRequestHeader("Connection", "Keep-Alive");
// getMethod.setRequestHeader("Accept", "*/*");
// getMethod.setRequestHeader("From", "goolebot@googlebot.com");
// getMethod.setRequestHeader("User-Agent",
// "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
// getMethod.setRequestHeader("Accept-Encoding", "gzip, deflate");
// baidu
getMethod.setRequestHeader("Host", "
www.iteye .com");//itindex.net
getMethod.setRequestHeader("Connection", "Keep-Alive");
getMethod.setRequestHeader("Accept", "*/*");
getMethod.setRequestHeader("From", "goolebot@googlebot.com");
getMethod
.setRequestHeader(
"User-Agent",
"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
getMethod.setRequestHeader("Accept-Encoding", "gzip");
int statusCode = httpclient.executeMethod(getMethod);
System.out.println(getMethod.getResponseCharSet());
System.out.println(getMethod.getResponseHeader("Content-Encoding"));
System.out.println(getBodyAsString(getMethod,getMethod.getResponseCharSet()));
}
public static String getBodyAsString(GetMethod getHC, String charset)
throws IOException {
String acceptEncoding = "";
if (getHC.getResponseHeader("Content-Encoding") != null)
acceptEncoding = getHC.getResponseHeader("Content-Encoding")
.getValue();
StringBuffer sb = new StringBuffer();
if (acceptEncoding.toLowerCase().indexOf("gzip") > -1) {
// 建立gzip解压工作流
InputStream is = getHC.getResponseBodyAsStream();
GZIPInputStream gzin = new GZIPInputStream(is);
InputStreamReader isr = new InputStreamReader(gzin, charset); // 设置读取流的编码格式,自定义编码
java.io.BufferedReader br = new java.io.BufferedReader(isr);
String tempbf;
while ((tempbf = br.readLine()) != null) {
sb.append(tempbf);
sb.append("\r\n");
}
isr.close();
gzin.close();
} else {
InputStreamReader isr = new InputStreamReader(getHC
.getResponseBodyAsStream(), charset); // 设置读取流的编码格式,自定义编码
java.io.BufferedReader br = new java.io.BufferedReader(isr);
String tempbf;
while ((tempbf = br.readLine()) != null) {
sb.append(tempbf);
sb.append("\r\n");
}
isr.close();
}
getHC.abort();
getHC.releaseConnection();
return sb.toString();
}
}
Via http://itindex.net
分享到:
相关推荐
JAVA-用HttpClient来模拟浏览器GET,POST.docx
当然了,正如前面说到的,如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于...
apache httpclient document apache httpcore document
apache httpclient jar包 httpcomponents-client-4.2.5
目录前言正文OkHttp使用示例源码解析Apache HttpClient使用示例源码解析GoogleHttpClient哪个更香?总结声明 前言 前八篇文章介绍完了feign-core核心内容,从本篇开始将介绍它的“其它模块”。其实核心模块可以独立...
用HttpClient来模拟浏览器GET_POST,技术简单学!!
apache HttpClient jar包
Apache httpclient 4.5.12版本源码,不包含jar包。适合学习原理,查看各种接口的实现。
HttpClient网页抓取工具包整合,
本实例描述了Android平台下使用Apache开源项目的HttpClient访问网络的示例。分别使用HttpClient下的两个子实现类,DefaultHttpClient和AndroidHttpClient分别进行演示。
apache httpclient 源码和 jar包 源码不是反编译的
org.apache httpclient 4.5源代码,通过eclipse代码项目代码后可以直接查看httpclient源代码,与您的工程代码关连起来。
HttpClient抓取网页Demo,HttpClient 的入门示例,配合blog文章的附件
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....
本人的测试用,包括压缩及解压缩,完整模拟,处女作,不想做伸手党
wechatpay-apache-httpclient-0.2.1.jar
NULL 博文链接:https://zywang.iteye.com/blog/916489
赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
基于Apache HttpClient 4.5.2 封装的工具类 HttpUtil 可用于爬虫和模拟登陆。使用新的语法后比3.*版本的速度感觉有提升。使用后注意资源的释放 pom 部分,应该不全,需要用的根据代码的import去找maven资源即可。 ...