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 反射学习(超详细)

    一起学JAVA 反射学习(超详细)1什么是反射?Reflection(反射)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,被private封装的资源只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。2为什么需要反射?

    2022年6月11日
    34
  • DM7.0在VM-中标麒麟NeoKylin虚拟机上安装[通俗易懂]

    DM7.0在VM-中标麒麟NeoKylin虚拟机上安装[通俗易懂]DM7.0在VM-中标麒麟虚拟机上安装一、环境准备(VM安装中标麒麟虚拟机)1、安装vm14+中标麒麟6(NeoKylinLinxServer6forx86-64操作系统)挂载信息:注意点:具体过程可参考一下文章【磁盘分区】https://jingyan.baidu.com/article/15622f247dd805fdfcbea5e0.html【VM下安…

    2022年8月10日
    35
  • mysql日志文件位置_linux怎么导出日志文件

    mysql日志文件位置_linux怎么导出日志文件登录mysql终端mysql-uroot-p输入密码:进入mysql>1.日志文件路径mysql>showvariableslike‘general_log_file’;±—————–±———————————–+|Variable_name|Value|±—————–±———————————–+|general_log_f

    2022年8月31日
    4
  • java_简易画图板

    java_简易画图板下面我将分享用Java制作简易画图板的过程。version1Draw.javaJava代码importjavax.swing.JFrame;/****@authoryangzhenlin*

    2022年7月2日
    21
  • python字符串格式化方法_format在python的意思

    python字符串格式化方法_format在python的意思用法:它通过{}和:来代替传统%方式1、使用位置参数要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表&g

    2022年8月1日
    2
  • 基于MATLAB的AM调制解调「建议收藏」

    基于MATLAB的AM调制解调「建议收藏」基于MATLAB的AM调制解调摘要现在的社会越来越发达,科学技术不断的在更新,在信号和模拟电路里面经常要用到调制与解调,而AM的调制与解调是最基本的,也是经常用到的。用AM调制与解调可以在电路里面实现很多功能,制造出很多有用又实惠的电子产品,为我们的生活带来便利。在我们日常生活中用的收音机就是采用了AM调制的方式,而且在军事和民用领域都有十分重要的研究课题。现用MATLAB中M文件实现本课

    2022年6月3日
    50

发表回复

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

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