HttpClient是一个非常好用的java开源项目,其作用是对用java程序对网站发起Http请求。
下面是鲁炬对HttpClient进行的简单封装,主要优点是,静态调用,自动识别网页字符集,伪装火狐/IE浏览器。
为什么不使用单例。以前是用单例模式,只创建一个HttpClient示例,后来发现用单例在并发情况下会出现bug,所以改为了每次调用都新建一个。
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.lang.StringUtils;
/**
* @author 鲁炬
*
*/
public class HttpClientUtil {
public static HttpClient getClient() {
HttpClient client = new HttpClient();
return client;
}
public static String getHtml(String url) throws HttpException, IOException {
return getHtml(url, 80, null, null, 0, null);
}
public static String getHtml(String url, String cookie) throws HttpException, IOException {
return getHtml(url, 80, null, null, 0, cookie);
}
public static String getHtml(String url, int port, String cookie) throws HttpException, IOException {
return getHtml(url, port, null, null, 0, cookie);
}
public static String getHtml(String url, int port, String encoding, String proxyHost, int proxyPort, String cookie)
throws HttpException, IOException {
HttpClient httpClient = getClient();
String rest = null;
if(proxyHost != null && proxyPort != 0) httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort);
HttpMethod method = new GetMethod(url);
if(!StringUtils.isBlank(cookie)) {
method.addRequestHeader("Cookie", cookie);
}
method.addRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727");
//Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
httpClient.executeMethod(method);
//根据http头解析正确的字符集
String header = method.getResponseHeader("Content-Type").getValue();
if(header.contains("charset=")) {
encoding = header.substring(header.indexOf("charset=") + "charset=".length(), header.length());
}
if(encoding == null) encoding = "GBK";
rest = new String(method.getResponseBody(), encoding);
method.releaseConnection();
return rest;
}
public static void main(String[] args) throws HttpException, IOException {
String url = "http://www.ccb.com";
System.out.println(getHtml(url));
}
}
分享到:
相关推荐
重新封装的HttpClient类 用于网页抓取的朋友们可以留着,还算比较完善!
HttpClient的一个封装, HttpClient的一个封装
JAVA利用HttpClient进行HTTPS接口调用
httpclient4.3的二次封装,解决了代理问题、多线程问题、SSL问题、通用的get、post请求
httpclient简化封装,方便调用webapi接口,使用attrubte来控制模型序列化的位置
httpclient4 封装实例 apache httpclient4.2jar包
httpclient4.3 封装工具类.zip
<artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.1</version> </...
一个使用HttpClient访问WS 的例子,包含相关jar包
自己对HttpClient的简单封装,目前只封装了post方式的请求
本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...
主要介绍了java 中HttpClient传输xml字符串实例详解的相关资料,需要的朋友可以参考下
希望用http协议的能可以帮到大家!很有使用价值!大家可以看看!
详细说明在https://blog.csdn.net/zyf2533/article/details/118294101?spm=1001.2014.3001.5501
httpclient 静态化网站 project 静态化首页 子页 一网打尽。
封装了httpclient的get请求和post请求,包括传参数和和不传参数,以及请求头信息的设定。
webservice调用实例,通过HttpClient调用,包括完整参数调用,项目通过maven搭建
HttpClient工具类封装,基于httpclient4.5.12,有get、post、put、delete方法,可设置连接超时时间,请求超时时间,socket读写超时时间,设置是否允许重定向,字符集
C#模拟IE浏览器,这是一个.net模拟IE浏览器的实例。可以学习。net的相应组建
使用httpclient调用公安部接口 并接受返回的字符串转换为图片