项目里远程调用POST/GET接口时使用的方法

一、远程调用post接口时的方法

方法一:

这个方式的querys传的是参数(参数可是单个参数/对象)
host指的是远程调用的主机地址
headers指的是头信息(可有可无)
body指的是字符集的编码格式

public static String doPost(String host, String path,Map<String, String> headers,Map<String, String> querys,String body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (body!=null && !"".equals(body) && body.length()>0) {request.setEntity(new StringEntity(body, "utf-8"));}//客户端执行。获取数据HttpResponse response = httpClient.execute(request);//通过response里的getEntity()方法获取客户端的返回值,然后return进行返回;HttpEntity entity = (HttpEntity) response.getEntity();if (entity != null) {body = EntityUtils.toString(entity, "UTF-8");}//json根据key取valueEntityUtils.consume(entity);return body;}

方法二:

urlStr 第三方接口地址
param 数据参数,JSON格式,可以为null(这个一般传的是对象参数)

public static String doPost(String urlStr, String param) {HttpURLConnection connection = null;InputStream is = null;InputStreamReader rsd = null;BufferedReader br = null;OutputStream os = null;OutputStreamWriter osw = null;BufferedWriter bw = null;StringBuffer sb = new StringBuffer();try {URL url = new URL(urlStr);connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setDoInput(true);connection.setDoOutput(true);connection.setUseCaches(false);    //不缓存connection.setRequestProperty("connection", "Keep-Alive");    //设置保活连接connection.setRequestProperty("charset", "UTF-8");            //提交的数据编码connection.setRequestProperty("Content-type", "application/json");    //提交的数据格式connection.setRequestProperty("accept", "application/json");        //接收的数据格式connection.setConnectTimeout(30000);    //30秒连接超时connection.setReadTimeout(30000);        //30秒读取超时connection.connect();if (param != null && !"".equals(param)) {os = connection.getOutputStream();osw = new OutputStreamWriter(os);bw = new BufferedWriter(osw);bw.write(param);bw.flush();}int status = connection.getResponseCode();if (status == 200) {is = connection.getInputStream();rsd = new InputStreamReader(is, "UTF-8");br = new BufferedReader(rsd);String s;while ((s = br.readLine()) != null) {sb.append(s);}} else {return "{\"ResuleState\":\"-1\",\"Msg\":\"连接异常\"}";}} catch (MalformedURLException e) {e.printStackTrace();} catch (ProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (br != null) {br.close();}if (rsd != null) {rsd.close();}if (is != null) {is.close();}if (bw != null) {bw.close();}if (osw != null) {osw.close();}if (os != null) {os.close();}if (connection != null) {connection.disconnect();}} catch (IOException e) {e.printStackTrace();}}return sb.toString();}

举例:

 Map<String, Object> map = new HashMap<>();map.put("currentPage",paramData.getCurrentPage());map.put("pageSize",paramData.getPageSize());map.put("addrList",paramData.getAddrList());map.put("startTime",paramData.getStartTime());map.put("endTime",paramData.getEndTime());String params = JSONObject.toJSONString(map);String registerResult = HttpUtils.doPost(base + url, params);JSONObject result = JSONObject.parseObject(registerResult);

二、远程调用GET时的方法

方法一:

public static String doGet(String url, Map<String, Object> param) {StringBuffer sb = new StringBuffer(url+"?");Iterator<Map.Entry<String, Object>> iterator = param.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, Object> entry = iterator.next();sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");}sb = sb.deleteCharAt(sb.length() - 1);log.info("Http-GET 请求:" + sb.toString());String data = "";// 创建请求对象HttpGet httpGet = new HttpGet(sb.toString());// 设置参数HttpParams params = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(params, 10000);HttpConnectionParams.setSoTimeout(params, 10000);// 执行请求的对象HttpClient client = new DefaultHttpClient(params);// 执行请求镀锡try {HttpResponse resp = client.execute(httpGet);// 判断是否响应成功if (resp.getStatusLine().getStatusCode() == 200) {// 获取响应 的数据HttpEntity entity = resp.getEntity();data = EntityUtils.toString(entity, "utf-8");}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return data;}

方法二:

public static String doGet(String host, String path, String method,String encoding,Map<String, String> headers,Map<String, String> querys)throws Exception {String body = "";
//        HttpClient httpClient = wrapClient(host);CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;HttpGet request = new HttpGet(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}response = httpClient.execute(request);HttpEntity entity = (HttpEntity) response.getEntity();if (entity != null) {body = EntityUtils.toString(entity, encoding);}////json根据key取value//        JSONObject jsonObject = JSONObject.parseObject(body);
//        String value = jsonObject.getString("bodyData");
//        JSONObject jsonObject1 = JSONObject.parseObject(value);
//        String list = jsonObject1.getString("list");EntityUtils.consume(entity);response.close();
//        System.out.println("数据内容:" + body);
//        System.out.println("value:" + list);return body;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再讲IQueryablelt;Tgt;,揭开表达式树的神秘面纱

接上篇《先说IEnumerable&#xff0c;我们每天用的foreach你真的懂它吗&#xff1f;》 最近园子里定制自己的orm那是一个风生水起&#xff0c;感觉不整个自己的orm都不好意思继续混博客园了&#xff08;开个玩笑&#xff09;。那么在此之前我们有必要仔细了解下 IQueryable<…

Java进阶之路——从初级程序员到架构师,从小工到专家

转载自 Java进阶之路——从初级程序员到架构师&#xff0c;从小工到专家怎样学习才能从一名Java初级程序员成长为一名合格的架构师&#xff0c;或者说一名合格的架构师应该有怎样的技术知识体系&#xff0c;这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫…

堆排序原理及其实现(C++)

https://blog.csdn.net/lzuacm/article/details/52853194 堆排序原理及其实现(C) 1. 堆排序的引入 我们知道简单选择排序的时间复杂度为O(n^2)&#xff0c;熟悉各种排序算法的朋友都知道&#xff0c;这个时间复杂度是很大的&#xff0c;所以怎样减小简单选择排序的时间复杂度…

Redis集群~StackExchange.redis连接Twemproxy代理服务器

本文是Redis集群系列的一篇文章&#xff0c;主要介绍使用StackExchange.Redis进行Twemproxy&#xff08;文中简称TW&#xff09;代理服务的连接过程&#xff0c;事务上&#xff0c;对于&#xff34;&#xff37;来说&#xff0c;我们需要理解一下它的物理架构&#xff0c;它类似…

List集合转分页

当所要查询的数据不能通过框架自带的分页和自定义分页实现的时候&#xff0c;一般查询出来的数据大多数情况都是list的形式。这就牵扯到把list集合转成分页&#xff0c;实现分页操作。   以下就是list转page的工具 /*** list转page进行手动分页* param list 要转的list集合*…

内存转换Image到Icon

转载自 内存转换Image到Icon 时候我们需要在内存中转换Image格式到Icon 根据经验&#xff0c;通常我们应该可以这样做 Image image xxxx;///假设这里已经有一个Image对象 System.IO.MemoryStream mStream new System.IO.MemoryStream();///创建内存流 image.Save(mStream,…

同步异步

https://blog.csdn.net/ideality_hunter/article/details/53453285 同步和异步&#xff0c;区别 2016年12月04日 11:20:17 阅读数&#xff1a;60233 同步&#xff1a; 同步的思想是&#xff1a;所有的操作都做完&#xff0c;才返回给用户。这样用户在线等待的时间太长&…

不想穷下去就请看!

不想穷下去就请看!          1、记住&#xff0c;平均每天看电视超过三个小时以上的&#xff0c;一定都是那些月收入不超过两千元的&#xff0c;如果你想要月收入超过两千&#xff0c;请不要把时间浪费在电视上。同样的道理&#xff0c;那些平均每天玩网络游戏或聊天超过…

.NET开发者如何使用MyCat

背景 在开发中&#xff0c;我们设计的系统的效率在很大程度上会受到数据库引擎单表的性能制约&#xff0c;因此在数据量庞大、或记录过宽时&#xff0c;需要考虑分库分表从而减轻数据库压力&#xff0c;提升查询效率。此外配置读写分离&#xff0c;让主数据库处理事务性查询&am…

关于Icon,Image,ImageIcon的简单的对比参考 上篇

转载自 关于Icon&#xff0c;Image&#xff0c;ImageIcon的简单的对比参考 上篇其实就算是现在&#xff0c;我还是有不少地方概念模糊&#xff0c;但是下面的内容是是没有什么问题的。稍微介绍一下&#xff0c;或许有些地方我无法解释&#xff1a; 大部分内容都是查的Java SE…

移动端为什么拿不到本地运行的web工程数据

原因很简单 连接的是远程服务器的tomcat啊啊啊啊啊

道指mt4代码_剑指offer算法题052:正则表达式匹配

小编在求职找找工作期间剑指offer上的算法题刷了很多遍&#xff0c;并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现&#xff0c;小编每天和大家分享一道剑指offer上的算法题&#xff0c;以及小编总结的答案。下面是第…

.NET 程序集单元测试工具 SmokeTest 应用指南

Smoke Test(冒烟测试)&#xff0c;也称Regression Test(回归测试)&#xff0c;是对软件的安装和基本功能的测试。一般地我们使用脚本来实现Smoke Test的自动化&#xff0c;可借用虚拟机的snapshot机制来保证干净的环境来进行Smoke Test&#xff0c;然后将测试好的程序集成到Con…

JavaFX将Node导出为图片

转载自 JavaFX将Node导出为图片在JavaFX中提供了一个很实用的功能。我们可以将任意节点截图导出。代码如下:WritableImage image mapCanvas.snapshot(new SnapshotParameters(), null); try { ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", fil…

要么干,要么滚,千万别混

原文来自网络&#xff0c;侵删&#xff01; 公司里混日子的人&#xff0c;最终伤害的是自己&#xff01;你混日子&#xff0c;就是日子混你&#xff0c;你自己是输家。 无论为谁打工&#xff0c;要为自己学东西&#xff0c;客观上为公司创造价值。 收获与投入成正比&#xff0c…

basemap安装_Python画地图逃不过的basemap「完全安装手册」 | 附下载

基础配置&#xff1a;Mac 2017 | Python3python虐我千百遍&#xff0c;我待python如初恋Python需要跳过的安装的坑太太太太多了!!!!!前段时间看《利用python进行数据分析》这本书&#xff0c;到可视化的部分&#xff0c;看着最后的例子地图挺酷炫的&#xff0c;跟着敲代码的过程…

秋招--持续更新

7月份 阿里 电话面试挂 高并发 多线程 8月16日 17:06 网易互娱一面跪 问题 树二叉树 堆排序 各种字符串处理

String与InputStream相互转换

转载自 String与InputStream相互转换1.String to InputStream String str "String与InputStream相互转换";InputStream in_nocode new ByteArrayInputStream(str.getBytes()); InputStream in_withcode new ByteArrayInputStream(str.getByt…

spring data jpa是什么?

spring data jpa是什么&#xff1f; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/jewelry008/article/details/76359516 Spring Data JPA能干什么 在开始之前&#xff0c;先举个简单的例子. 一张表user有三个字段&…

LINQ:进阶 - LINQ 标准查询操作概述

“标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法。大多数这些方法都在序列上运行&#xff0c;其中的序列是一个对象&#xff0c;其类型实现了IEnumerable<T> 接口或 IQueryable<T> 接口。标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询…