java模拟http get和post 提交 httpclient
2016-01-07 10:20
686 查看
原文地址:http://blog.csdn.net/miniyaner/article/details/12423435
原文post的处理不是很方便,本人对其进行了改造,下面为改造完后的代码:
接收参数可以直接使用:request.getParameter("xxx")
使用httpclient工具包commons-httpclient-3.1.jar,依赖commons-logging-1.0.4.jar和commons-codec-1.3.jar。
原文post的处理不是很方便,本人对其进行了改造,下面为改造完后的代码:
接收参数可以直接使用:request.getParameter("xxx")
使用httpclient工具包commons-httpclient-3.1.jar,依赖commons-logging-1.0.4.jar和commons-codec-1.3.jar。
package util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; 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.NameValuePair; 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.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 ) { e.printStackTrace(); } catch ( IOException e ) { e.printStackTrace(); } catch ( Exception e ) { e.printStackTrace(); } 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(); PostMethod method = new PostMethod(url); method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset="+charset); //设置Http Post数据 if ( params != null ) { NameValuePair[] data = new NameValuePair[params.size()]; int i = 0; for ( Map.Entry<String, String> entry : params.entrySet() ) { NameValuePair p = new NameValuePair(entry.getKey(), entry.getValue()); data[i]=p; i++; } method.setRequestBody(data); } 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 ( URIException e ) { e.printStackTrace(); } catch ( IOException e ) { e.printStackTrace(); } catch ( Exception e ) { e.printStackTrace(); } finally { method.releaseConnection(); } return response.toString(); } public static void main ( String [] args ) { Map<String, String> params = new HashMap<String,String>(); params.put("password", "123123"); params.put("nickname", "洋洋"); String y = doPost("http://127.0.0.1:8080/", params, "UTF-8", true); System.out.println(y); } }
相关文章推荐
- TCP接受和发送程序以及长连接的处理方法
- 详解HttpURLConnection
- URL,URLConnection,HttPURLConnection的使用
- Android 封装http请求的工具类
- APP 检测网络的状态 是wifi 还是蜂窝连接
- 深入了解HTTP和Socket在实时性Web上的实践
- libevent的http服务与libjson结合
- Http 协议
- Android:3G网络是否可用
- 2016【太原网络营销师】郭文军教你如何学网络营销
- 消除SDK更新时的“https://dl-ssl.google.com refused”异常
- Mac用CornerStone配置SVN,HTTP及svn简单使用说明
- asp.net中http提交数据所遇到的那些坑
- [原]unity3d之http多线程异步资源下载
- SDH,OTN,IP,MPLS,ATM网络介绍
- Android之使用Http协议实现文件上传示例(上传MP3文件)
- 关于广域网环境TCP是否适用的问题
- 关于Java去连接HTTP地址的操作
- HTTP状态码
- Tomcat 输入http://localhost:8080网页打不开(估计是端口号被占用)