import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
/**
* HTTP工具箱
*
* @author leizhimin 2009-6-19 16:36:18
*/
public final class HttpTookit {
private static Log log = LogFactory.getLog(HttpTookit.class);
/**
* 执行一个HTTP GET请求,返回请求响应的HTML
*
* @param url 请求的URL地址
* @param queryString 请求的查询参数,可以为null
* @param charset 字符集
* @param pretty 是否美化
* @return 返回请求响应的HTML
*/
public static String doGet(String url, String queryString, String charset, boolean pretty) {
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
try {
if (StringUtils.isNotBlank(queryString))
//对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串
method.setQueryString(URIUtil.encodeQuery(queryString));
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
String line;
while ((line = reader.readLine()) != null) {
if (pretty)
response.append(line).append(System.getProperty("line.separator"));
else
response.append(line);
}
reader.close();
}
} catch (URIException e) {
log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);
} catch (IOException e) {
log.error("执行HTTP Get请求" + url + "时,发生异常!", e);
} finally {
method.releaseConnection();
}
return response.toString();
}
/**
* 执行一个HTTP POST请求,返回请求响应的HTML
*
* @param url 请求的URL地址
* @param params 请求的查询参数,可以为null
* @param charset 字符集
* @param pretty 是否美化
* @return 返回请求响应的HTML
*/
public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) {
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
HttpMethod method = new PostMethod(url);
//设置Http Post数据
if (params != null) {
HttpMethodParams p = new HttpMethodParams();
for (Map.Entry<String, String> entry : params.entrySet()) {
p.setParameter(entry.getKey(), entry.getValue());
}
method.setParams(p);
}
try {
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
String line;
while ((line = reader.readLine()) != null) {
if (pretty)
response.append(line).append(System.getProperty("line.separator"));
else
response.append(line);
}
reader.close();
}
} catch (IOException e) {
log.error("执行HTTP Post请求" + url + "时,发生异常!", e);
} finally {
method.releaseConnection();
}
return response.toString();
}
public static void main(String[] args) {
String y = doGet("http://video.sina.com.cn/life/tips.html", null, "GBK", true);
System.out.println(y);
}
}
分享到:
相关推荐
httpclient实现的工具类含有以下功能: 1、后台模拟发送GET请求 2、后台模拟发送POST请求 3、解决了中文乱码
java HttpClient 发送GET请求和带有表单参数的POST请求教程例子
Java 模拟Ajax POST GET 提交代码,实测很好用。
java发送get,post请求,可以实现与后台交互,代码便捷高效,是原生代码,支持并发性;代码结构清晰易懂,容易上手;
java模拟HTTP发送post和get请求工具类,使用httpClient类
NULL 博文链接:https://tujunlan.iteye.com/blog/1997745
java后台实现 get post 提交.zip
是一个Java 发送http put、delete、 post、 get 请求的工具类。可用在与restful service 进行通讯的代码中。
运行环境jdk1.6,使用时,根据实际情况修改: map.put("userId", "320"); String temp = HttpTest.doPost("http://www.test.com/submit.jsp", map, "GBK");
主要介绍了Java模拟HTTP Get Post请求,轻松实现校园BBS自动回帖,感兴趣的小伙伴们可以参考一下
主要介绍了Java模拟HTTP Get Post请求实现论坛自动回帖功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了java使用httpclient模拟post请求和get请求示例,需要的朋友可以参考下
在Java中使用HttpClient模拟POST请求或者GET请求,使用的是信易通的短信平台接口,一般的情况下都是POST请求(post请求安全,可靠,信息不会在地址栏显示出来),然后(看短信平台要求,),调用短信平台提供的接口...
java模拟网络请求,get post put delete四种模式,请求头处理参数处理。此文件仅供大家参考,稍作修改即可。
模拟http请求实现文件上传,模拟doGet、doPost请求,实现信息发送
本代码只适合有java经验者使用,请先看readme.md 部分功能有 1.getip 请使用类似熊猫代理填充代理ip,为节省费用,做了文件缓存 2.由于iboxApi接口数据是加密的,使用selenium调用了网站里的js(window.de)解密方法 3....
Java模拟发送get请求 Java模拟发送post请求 HTTP工具 返回值统一为String,所以请求接口要注意为 返回为json或者xml的接口。
模拟HTTP协议,Java 发送 http 请求 (get 与 post 方法请求 ) , 以下代码经本人亲自调试可用! 可以直接使用之。 注意:通过 BufferedReader 读取远程返回的数据时,必须设置读取编码,否则中文会乱码!
http json 模拟请求工具,可以发送http请求,并且可选择发送请求的类型,可以发送json数据。