目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于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. 跟着老司机玩转Node自定义命令行
  2. 国家微生物科学数据中心推出免费一站式生物信息分析云平台
  3. 解决Qt创建项目后只有.pro文件问题
  4. 从 “香农熵” 到 “告警降噪” ,如何提升告警精度?
  5. nodeJs利用mongoose模块操作数据
  6. pytorch分布式报错 “tensor must be non-overlapping and dense“
  7. kali 2019-4中文乱码解决方法
  8. 你最后会划掉谁的名字……
  9. Android 代码混淆之部分类不混淆的技巧
  10. java zinterstore_Java架构之Redis系列:通过文章点赞排名案例学习Sortedset命令
  11. html form表格采购单,【HTML】--- 列表、表格、form表单标签
  12. 机器人操作系统二 ROS2:设计、架构和野外使用 - 机器翻译
  13. termux关于python3.10中下载numpy,pandas,matplotlib,以及jupyter|ahonsmile
  14. 计算机网络重要知识点总结(期末复习笔记)
  15. mysql查最高薪水,使用子查询查找MySQL Employee表的最高和第二最高薪水?
  16. 计算机是如何工作的? ----李泽源
  17. Android Oss上传文件简单使用
  18. 【排序综合】直接插入排序,希尔排序,快速排序,堆排序,冒泡排序,简单选择排序的简介,实现和算法复杂度分析
  19. 学习笔记-使用python进行数据分析
  20. bcb获取计算机名称,win7老电脑共享打印机无法连接0x00000bcb错误的修复方法

热门文章

  1. 低代码开发平台功能怎么样?好不好用?
  2. SystemVerilog----随机
  3. ws.schild.jave.InputFormatException
  4. 抽象数据类型(ADT)的学习总结及思考
  5. 大麦网抢票(2.0)版
  6. Tween.js补间动画插件入门
  7. nginx+uwsgi+django+虚拟环境,阿里云百度翻译爬虫
  8. 使用pytorch搭建ResNet并基于迁移学习训练(超详细 |附训练代码)
  9. Svg简介及学习教程
  10. 微信内打开链接显示已停止访问该网页