Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnection),如果有需要的话也可以通过setRequestFactory方法替换为例如 Apache HttpComponents、Netty或OkHttp等其它HTTP library。

直接上代码了

1.我们先定义一个对象来接收返回的数据。(我这里的例子调用的是谷歌地图的API,正常来说我们的对象应该定义为泛型)

@Data
public class TestObject {private int status;private String message;private List<Map<String,Object>> result;
}

2.具体调用代码。(我这里采用的是多线程的方式,防止数据太多的时候跑的时间过长)

public class TestThread implements Callable<TestObject> {//你申请的apkprivate final static String apk = "*******************";List<String> query;String region;/*** 总之这些就是第三方接口的参数啦!* @param query 查询的关键字* @param region 查询的地区*/public TestThread(List<String> query,String region) {this.query = query;this.region = region;}@Overridepublic TestObject call() throws Exception {StringBuilder sb = new StringBuilder();for (String s:query) {sb = sb.append(s);}RestTemplate restTemplate = new RestTemplate();String url = "http://api.map.baidu.com/place/v2/suggestion?query=" + sb+ "&region=" + region+ "&city_limit=true&output=json&ak=" + apk;HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_UTF8);HttpEntity<String> entity = new HttpEntity<String>(headers);//看得懂吧String strbody = restTemplate.exchange(url, HttpMethod.GET, entity,String.class).getBody();TestObject object = JSONObject.parseObject(strbody, TestObject.class);return object;}
}

3.接下来就是调用啦

    public static void main(String[] args) throws InterruptedException, ExecutionException{//缓存线程池 防止太多的线程占据内存ExecutorService pool= Executors.newCachedThreadPool();List<List<String>> query = new ArrayList<>();for (int i = 0; i < 5; i++) {List<String> list = new ArrayList<>();switch (i) {case 0:list.add("七天酒店");break;case 1:list.add("富力");break;case 2:list.add("北京路");break;case 3:list.add("富力盈凯");break;case 4:list.add("中和广场");break;}query.add(list);}String region = "广州";for (int i = 0; i < query.size(); i++) {Callable thread = new TestThread(query.get(i),region);Future<TestObject> f = pool.submit(thread);System.out.println(f.get().getResult().get(0).get("name"));System.out.println(f.get().getResult().get(0).get("location"));}pool.shutdown();}
}

SpringBoot调用第三方接口相关推荐

  1. SpringBoot(32) 整合Forest实现调用第三方接口

    一.前言 Forest是什么? Forest是一个高层的.极简的轻量级 HTTP调用API框架,让Java发送HTTP/HTTPS请求不再难.它比OkHttp和HttpClient更高层,比Feign ...

  2. Java 调用第三方接口方法

    Java 调用第三方接口方法 一. 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 使用步骤: 1.通过统一资源 ...

  3. http方式调用第三方接口

    java如何调用对方http接口(II) - 流年煮雪 - 博客园 纯Java api HttpURLConnection Java调用外部接口_CJD的博客-CSDN博客_调用外部接口 纯Java  ...

  4. 调用第三方接口缴费的通用逻辑

    下面是我总结的调用第三方接口缴费的通用逻辑 代码逻辑如下: 代码示例: public RestDTO<BaseDTO> charge(Param param)throws Exceptio ...

  5. 前端调用第三方接口跨域问题(淘宝)

    前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...

  6. Java 调用第三方接口,实战来了!

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 1.准备工作: 在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTem ...

  7. Http调用第三方接口的两种方式实例《超详细!!!》***

    Http调用第三方接口的两种方式<超详细!!!>* 最近在公司做一些调用第三方接口的工作,查阅了一部分的资料和向前辈以及朋友请教,完成了第三方接口的调用,其实主要是通过第三方提供的文档,完 ...

  8. 读取EXCEL文件数据,再调用第三方接口,将第三方数据重新写入到EXCEL文件

    读取EXCEL文件数据,再调用第三方接口,将第三方数据重新写入到EXCEL文件 工作中涉及很多提供文档数据,少则几条,多则上万,少的可以自己编辑一个,静态final来自己定义,一旦数太多得话,就得使用 ...

  9. UIPATH 调用第三方接口(百度OCR文字识别举例)

    业务场景: 使用RPA获取业务系统网站的验证码截图,将截图转base64之后传到百度OCR文字识别接口,获取文字识别结果,将识别结果用作登陆业务系统的验证码凭证.从而解决RPA自动登录系统的问题. 设 ...

最新文章

  1. 菜鸟学算法一基础知识篇
  2. linux线程多参数传递参数,Linux中多线程编程并传递多个参数
  3. JVM 学习一:JVM 的构架模型及生命周期
  4. 刑事科学技术专业与计算机专业,辽宁警察学院刑事科学技术专业
  5. 03. Java NIO Channel 通道
  6. 【华为云技术分享】为什么说物联网平台是城市数字化的必备底座
  7. django 1.8 官方文档翻译: 3-4-5 内建基于类的视图的API
  8. coreboot学习8:ramstage阶段之资源分配流程
  9. linux Crond 执行预定任务
  10. Github的README中插入图片,Github仓库项目主页显示图片
  11. 使用DxVcl为Python的飞信库写一个简单的GUI
  12. 2020_0527_近期思考
  13. javaweb JAVA JSP球鞋销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)
  14. 带SN切换流程_贴片电阻生产工艺流程简介
  15. 常见蛋白质种类_蛋白质对人体有什么重要作用 常见蛋白质都有哪些种类
  16. kali2021安装RTL8188GU无线网卡[TL-WN726N]驱动
  17. 【报告分享】头部DTC品牌增长案例库-易观智库零一裂变(附下载)
  18. 为用户“NT AUTHORITY/NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied)
  19. 【笔记】excel预加载word引用
  20. CSS实现三角形、扇形、半圆以及圆形

热门文章

  1. 拼音四线三格图片_一年级语文必考拼音拼读+书写规则,孩子期中考试要考!!...
  2. java通过framer生成word_framemarker导出word(含图片)
  3. VOS 系统报错,系统挂断 VOS不通,各种vos疑难杂病都在这里
  4. 做百度钱包相关调查问卷有感
  5. InSAR技术应用-电力行业
  6. 计算机组成原理期末超详细复习
  7. 从0到1搭建自己的网站保姆级教程 · 上篇 · 域名与云服务器的准备【网站建设】
  8. 多重背包问题与分组背包
  9. 【Android】版本更替
  10. 【车道线检测】FOLOLane解读