java模拟http get和post 提交
2013-02-18 14:48
483 查看
使用httpclient工具包commons-httpclient-3.1.jar,依赖commons-logging-1.0.4.jar和commons-codec-1.3.jar。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Map; 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; /** * * * <p>Title:HttpTookitEnhance</p> * <p>Description: httpclient模拟http请求,解决返回内容乱码问题</p> * <p>Copyright: Copyright (c) 2010</p> * <p>Company: </p> * @author libin * @version 1.0.0 */ public class HttpTookitEnhance { /** * 执行一个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 ( queryString != null && !queryString.equals("") ) //对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 ) { } catch ( IOException 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 ) { } 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); } }
相关文章推荐
- Java 使用 URLConnection 模拟 Http Get和Post 提交
- Java 使用 URLConnection 模拟 Http Get和Post 提交
- Java 使用 URLConnection 模拟 Http Get和Post 提交
- java模拟http get和post 提交
- java模拟http get和post 提交 httpclient
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- php中用socket模拟http中post或者get提交数据的示例代码
- php中用socket模拟http中post或者get提交数据的示例代码
- Java后台模拟发送http的get和post请求,并测试
- 【网摘】JAVA - 用 HttpClient 来模拟浏览器 GET, POST
- Java: HttpURLConnection 模拟登录方法 (带cookie 的Post/Get)_20160908_七侠镇莫尛貝
- Java模拟HTTP的Get和Post请求(增强)
- java用HttpURLConnection模拟post提交数据
- java使用HttpURLConnection和HttpClient分别模拟get和post请求以及操作cookies
- Java模拟POST表单提交HttpClient操作
- socket模拟http中post或者get提交数据,并获得响应数据
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- Java模拟POST表单提交HttpClient操作
- socket模拟http中post或者get提交数据,并获得响应数据
- [Java] 模拟HTTP的Get和Post请求