HttpClient的HttpGet和HttpPost工具类
目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于HttpClient常用的HttpGet和HttpPost这两个类的编码方式。
HttpClient常用的HttpGet和HttpPost这两个类分别对应Get方式和Post方式。
无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。
1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。
首先介绍HttpGet方式请求:
无参数的Get请求
/*** 封装HTTP GET方法* 无参数的Get请求* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String get(String url) throws ClientProtocolException, IOException {//首先需要先创建一个DefaultHttpClient的实例HttpClient httpClient = new DefaultHttpClient();//先创建一个HttpGet对象,传入目标的网络地址,然后调用HttpClient的execute()方法即可:HttpGet httpGet = new HttpGet();httpGet.setURI(URI.create(url));HttpResponse response = httpClient.execute(httpGet);String httpEntityContent = getHttpEntityContent(response);httpGet.abort();return httpEntityContent;}
有参数的Get请求
/*** 封装HTTP GET方法* 有参数的Get请求* @param* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String get(String url, Map<String, String> paramMap) throws ClientProtocolException, IOException {HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet();List<NameValuePair> formparams = setHttpParams(paramMap);String param = URLEncodedUtils.format(formparams, "UTF-8");httpGet.setURI(URI.create(url + "?" + param));HttpResponse response = httpClient.execute(httpGet);String httpEntityContent = getHttpEntityContent(response);httpGet.abort();return httpEntityContent;}
构造请求参数的公共方法(setHttpParams)
/*** 设置请求参数* @param* @return*/private static List<NameValuePair> setHttpParams(Map<String, String> paramMap) {List<NameValuePair> formparams = new ArrayList<NameValuePair>();Set<Map.Entry<String, String>> set = paramMap.entrySet();for (Map.Entry<String, String> entry : set) {formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}return formparams;}
获得响应HTTP实体内容(getHttpEntityContent)
/*** 获得响应HTTP实体内容* @param response* @return* @throws java.io.IOException* @throws java.io.UnsupportedEncodingException*/private static String getHttpEntityContent(HttpResponse response) throws IOException, UnsupportedEncodingException {//通过HttpResponse 的getEntity()方法获取返回信息HttpEntity entity = response.getEntity();if (entity != null) {InputStream is = entity.getContent();BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));String line = br.readLine();StringBuilder sb = new StringBuilder();while (line != null) {sb.append(line + "\n");line = br.readLine();}br.close();is.close();return sb.toString();}return "";}
POST 请求
/*** 封装支付HTTP POST方法* @param* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String postPayMsg(String url, Map<String, String> paramMap) throws ClientProtocolException, IOException {HttpClient httpClient = new DefaultHttpClient();httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000); httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);HttpPost httpPost = new HttpPost(url);List<NameValuePair> formparams = setHttpParams(paramMap);UrlEncodedFormEntity param = new UrlEncodedFormEntity(formparams, "UTF-8");//通过setEntity()设置参数给posthttpPost.setEntity(param);//利用httpClient的execute()方法发送请求并且获取返回参数HttpResponse response = httpClient.execute(httpPost);String httpEntityContent = getHttpEntityContent(response);httpPost.abort();return httpEntityContent;}
HttpClient的HttpGet和HttpPost工具类相关推荐
- 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...
- HttpClient发起Http/Https请求工具类
本文涉及到的主要依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifact ...
- HttpClient进行服务器传递信息,HttpUtil工具类
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引入Maven依赖 二.使用步骤 1.服务器A控制层 2.服务器B控制层 前言 使用httpclient实现两个服 ...
- 微信支付、微信企业付款到零钱工具类
微信支付.微信企业付款到零钱工具类 主要依赖:apache httpclient 4.5 jdk1.8 工具类主要功能: xml参数拼接 签名算法实现 post加密请求 import lombok.e ...
- HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类
摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的sessi ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...
- HttpClient工具类
HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...
- JAVA——保持cookie登录状态的HttpClient封装工具类
在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...
- JAVA——HttpClient封装工具类
在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...
- apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离
第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...
最新文章
- go mod导入本地包的正确引入方法:require + replace
- 基于.NET的俄罗斯方块课程设计
- php概率计算_PHP指定概率算法
- Go-cron定时任务
- 全球撤稿排行榜前10出炉:第一名多到想象不到
- 1、图解Oracle Logminer配置使用
- mktime()的格式
- java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...
- java中类初始化_java中类和对象的初始化
- 开源点云数据处理 开源_开源云–充满希望的未来
- UE4官方文档UI学习:2.UMG 创建主菜单
- lammps后处理:ovito选择原子高级技巧讲解
- 室内可见光定位matlab代码,visible-led-communication 这里给出了几个可见光通信的MATLAB程序...
- RASP-监控应用的底层,来从根本上发现攻击行为的产生
- 数学建模论文写作学习——数模论文概述
- #3、字符串转义字符
- 古希腊神话故事:狄俄尼索斯
- 大数据破解污染图谱 北风与雾霾啥关系
- HBuilderx打包h5的APP,解决获取相机权限问题
- 电子信箱怎么样注册?邮箱格式怎么写?