• Springboot使用RestTemplate调用第三方接口


    配置

    新建一个RestTemplate的配置类,如下:

    1. /**
    2. * RestTemplate配置项
    3. */
    4. @Configuration
    5. public class RestTemplateConfig {
    6. @Bean
    7. public RestTemplate restTemplate() {
    8. return new RestTemplate();
    9. }
    10. }

    在controller中引入RestTemplate,如下:

    1. @RestController
    2. public class LoginController {
    3. @Resource
    4. private RestTemplate restTemplate;
    5. }

    第三方接口为GET请求时

    代码如下(要注意get参数的位置是从1开始的,而非0):

    1. @RestController
    2. public class LoginController {
    3. @Resource
    4. private RestTemplate restTemplate;
    5. @PostMapping("/login")
    6. public Result login(@RequestBody @Validated LoginDto dto) {
    7. // 请求地址及参数
    8. String url = "https://api.gumengya.com/Api/IP?format={1}&ip={2}";
    9. String format = "json";
    10. String ip = "113.24.172.71";
    11. // 请求拼接并执行
    12. ResponseEntity result = restTemplate.getForEntity(url, String.class, format, ip);
    13. // 输出返回的响应状态、响应体、响应头
    14. System.out.println(result.getStatusCode());
    15. System.out.println(result.getBody());
    16. System.out.println(result.getHeaders());
    17. // 响应体为String格式,需要转换为json格式
    18. JSONObject jsonObject = JSON.parseObject(result.getBody());
    19. // 多层抽取某个指定层级的内容
    20. jsonObject = jsonObject.getJSONObject("data");
    21. jsonObject = jsonObject.getJSONObject("location");
    22. String area = jsonObject.getString("area");
    23. System.out.println("该ip的属地为:" + area);
    24. return Result.success(200, "登录成功", area);
    25. }
    26. }

     效果如下:

    第三方接口为POST请求时

    代码上与GET接口基本一致,只需要修改参数部分,以及将restTemplate.getForEntity换成restTemplate.postForEntity即可,如下:

    1. // 请求地址及参数
    2. String url = "https://api.gumengya.com/Api/IP";
    3. Map params = new HashMap();
    4. params.put("format", "json");
    5. params.put("ip", "113.24.172.71");
    6. // 请求拼接并执行
    7. ResponseEntity result = restTemplate.postForEntity(url, params, String.class);

  • 相关阅读:
    不习惯的 Vue3 起步六 の Echarts绘制下钻地图
    Swift中和C语言数据类型转换
    Matlab:查找命令行窗口或历史记录中的文本
    这是什么代码你能看懂吗
    五个人的五个成绩
    nginx之正向代理、反向代理和负载均衡(重点)
    文件存储空间管理(空闲表法,空闲链表法,位示图法,成组链表法)
    软件常见设计模式
    PyQt5学习笔记--GridLayout、FormLayout和StackedLayout布局
    多线程&并发篇---第十篇
  • 原文地址:https://blog.csdn.net/weixin_42966151/article/details/133771355