目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于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工具类相关推荐

  1. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...

    HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...

  2. HttpClient发起Http/Https请求工具类

    本文涉及到的主要依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifact ...

  3. HttpClient进行服务器传递信息,HttpUtil工具类

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引入Maven依赖 二.使用步骤 1.服务器A控制层 2.服务器B控制层 前言 使用httpclient实现两个服 ...

  4. 微信支付、微信企业付款到零钱工具类

    微信支付.微信企业付款到零钱工具类 主要依赖:apache httpclient 4.5 jdk1.8 工具类主要功能: xml参数拼接 签名算法实现 post加密请求 import lombok.e ...

  5. HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类

    摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的sessi ...

  6. Java开发小技巧(五):HttpClient工具类

    前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...

  7. HttpClient工具类

    HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...

  8. JAVA——保持cookie登录状态的HttpClient封装工具类

    在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...

  9. JAVA——HttpClient封装工具类

    在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...

  10. apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离

    第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...

最新文章

  1. go mod导入本地包的正确引入方法:require + replace
  2. 基于.NET的俄罗斯方块课程设计
  3. php概率计算_PHP指定概率算法
  4. Go-cron定时任务
  5. 全球撤稿排行榜前10出炉:第一名多到想象不到
  6. 1、图解Oracle Logminer配置使用
  7. mktime()的格式
  8. java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...
  9. java中类初始化_java中类和对象的初始化
  10. 开源点云数据处理 开源_开源云–充满希望的未来
  11. UE4官方文档UI学习:2.UMG 创建主菜单
  12. lammps后处理:ovito选择原子高级技巧讲解
  13. 室内可见光定位matlab代码,visible-led-communication 这里给出了几个可见光通信的MATLAB程序...
  14. RASP-监控应用的底层,来从根本上发现攻击行为的产生
  15. 数学建模论文写作学习——数模论文概述
  16. #3、字符串转义字符
  17. 古希腊神话故事:狄俄尼索斯
  18. 大数据破解污染图谱 北风与雾霾啥关系
  19. HBuilderx打包h5的APP,解决获取相机权限问题
  20. 电子信箱怎么样注册?邮箱格式怎么写?

热门文章

  1. ASP.NET使用AjaxPro实现前端跟后台交互详解
  2. 解决UE4缓存使C盘膨胀的问题
  3. 多视图聚类中的alignment
  4. J8:redis的数据删了,为什么内存占用还是高。 缓冲区的问题
  5. Sandbox(沙盒)—好用又安全的拟真测试环境
  6. audit工具 服务加固 diff与patch工具
  7. Java正则系列: (1)入门教程
  8. 如何屏蔽百度搜索中的csdn
  9. Linux源码剖析——MINIX文件系统分析
  10. 能被7,11,13整除的数的特征 joj 2586