SpringBoot调用第三方接口[通俗易懂]

SpringBoot调用第三方接口[通俗易懂]Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接,我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnect…

大家好,又见面了,我是你们的朋友全栈君。

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> {
    
    //你申请的apk
    private 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;
    }

    @Override
    public 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();

    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132952.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何运行.java文件

    首先按“Windows+R”键打开运行,输入“cmd”打开命令行窗口。然后通过cd进入.java文件所在的文件夹,生成与.Java文件同名的.class字节码文件。再输入“java 文件名”运行该.java文件。

    2022年1月17日
  • 批处理命令——set[通俗易懂]

    批处理命令——set[通俗易懂]【1】set命令简介  set,设置。【2】set命令使用  1.打印系统环境变量。set命令可以打印系统所有的环境变量信息。  应用示例:新建文本文件,命名为set_sys,修改文件类型为bat,用Notepad++打开编辑内容如下:1@echooff2::set显示所有系统环境变量3::set(暂时屏蔽掉,需要执行请去掉::)4pause>nul5::setc显示所有以C开头的环境变量(不区分大小写)6setc7pause

    2022年8月22日
  • maven编译 Process terminated【已解决】

    maven编译 Process terminated【已解决】maven项目编译报错如下:点击【项目名】提示点击蓝色报错的链接,在idea中打开了settings文件,找到提示的报错位置最后发现是缩进或者空格不对导致该问题,建议在notepa++中复制粘贴过来就好了…

    2022年4月27日
  • Django(4)操作指令大全[通俗易懂]

    Django(4)操作指令大全[通俗易懂]前言我们掌握了如何在命令提示符或PyCharm下创建Django项目和项目应用,无论是创建项目还是创建项目应用,都需要输入相关的指令才能得以实现,这些都是Django内置的操作指令。在PyChar

    2022年8月7日
  • 100套大数据可视化炫酷大屏Html5模板

    100套大数据可视化炫酷大屏Html5模板100套大数据可视化炫酷大屏Html5模板;包含行业:社区、物业、政务、交通、金融银行等,全网最新、最多,最全、最酷、最炫大数据可视化模板。源码地址 giteehttps://gitee.com/iGaoWei/big-data-view githubhttps://github.com/iGaoWei/BigDataView 使用说明 直接下载,使用浏览器访问静态页面即可。 git拉取代码$gitclonehttps://gitee….

    2022年9月7日
  • 基于python opencv人脸识别的员工考勤系统

    基于python opencv人脸识别的员工考勤系统#@[TOC](基于pythonopencv人脸识别的员工考勤系统)WorkAttendanceSystem一个基于opencv人脸识别的员工考勤系统##工程简介写于2018/09/,python课设期间;##项目结构mainui.py是主界面,调用face_img_register.py和face_recognize_punchcard.py其中face_img_register…

    2022年5月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号