Springboot使用RestTemplate调用第三方接口

news2024/9/21 14:28:30

配置

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

/**
 * RestTemplate配置项
 */
@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

在controller中引入RestTemplate,如下:

@RestController
public class LoginController {


        @Resource
        private RestTemplate restTemplate;

}

第三方接口为GET请求时

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

@RestController
public class LoginController {

        @Resource
        private RestTemplate restTemplate;

        @PostMapping("/login")
        public Result login(@RequestBody @Validated LoginDto dto) {

               // 请求地址及参数
               String url = "https://api.gumengya.com/Api/IP?format={1}&ip={2}";
               String format = "json";
               String ip = "113.24.172.71";

               // 请求拼接并执行
               ResponseEntity<String> result = restTemplate.getForEntity(url, String.class, format, ip);

               // 输出返回的响应状态、响应体、响应头
               System.out.println(result.getStatusCode());
               System.out.println(result.getBody());
               System.out.println(result.getHeaders());

               // 响应体为String格式,需要转换为json格式
               JSONObject jsonObject =  JSON.parseObject(result.getBody());

               // 多层抽取某个指定层级的内容
               jsonObject = jsonObject.getJSONObject("data");
               jsonObject = jsonObject.getJSONObject("location");
               String area = jsonObject.getString("area");
               System.out.println("该ip的属地为:" + area);

               return Result.success(200, "登录成功", area);
        }
}

 效果如下:

第三方接口为POST请求时

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

      // 请求地址及参数
      String url = "https://api.gumengya.com/Api/IP";

      Map<String, String> params = new HashMap();
      params.put("format", "json");
      params.put("ip", "113.24.172.71");

      // 请求拼接并执行
      ResponseEntity<String> result = restTemplate.postForEntity(url, params, String.class);

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

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

相关文章

PHP 车辆租赁系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 车辆租赁系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php 车辆租赁管理系统1 代码 https://download.csdn.net/download/qq_41221322/88414512…

软信天成:AI驱动,化解企业数据的隐私之痛

近年来&#xff0c;在全面数字化的背景下&#xff0c;不断加剧的数据丢失和爆炸式的个人数据增长让数据隐私的需求变得空前迫切。为解决个人、企业等敏感数据被滥用的现状&#xff0c;各地监管机构开始逐渐完善区域内数据隐私法律法规。从《欧盟通用数据保护条例》&#xff08;…

档案宝档案管理系统在微信小程序上线了!

随着信息时代的到来&#xff0c;企业和组织面临着越来越多的信息和数据需要管理。而档案管理作为一项重要的任务&#xff0c;对于企业的运营和决策起着至关重要的作用。为了满足用户的需求&#xff0c;我们很高兴地宣布&#xff0c;档案宝档案管理系统已经在微信小程序上线了&a…

git clone项目报错文件名过长

1.最近从git上clone项目时&#xff0c;有时会遇到报错&#xff0c;报出Filename too long错误。 Filename too long fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. 2.原因 Windows支持最长260字符的文件名&#xff08;包括其路径在…

Linux-文件管理命令

绝对路径&#xff1a;从根目录开始描述的路径 pwd输入即为绝对路径&#xff0c; 开头一定是“/”&#xff0c;因为一定是从根目录开始走 相对路径&#xff1a;从当前路径开始描述的路径&#xff0c;开头不一定是“/”&#xff0c;因为不一定是从根目录开始走的 .:是当前目录 。…

无人值守配电室变电所运维解决方案

随着电力系统数字化、智能化的不断发展&#xff0c;无人值守配电室变电所已经成为一种趋势。为了确保变电所的安全稳定运行&#xff0c;本文提出了一种无人值守配电室变电所运维解决方案。 一、背景介绍 力安科技电易云无人值守配电室变电所是指通过远程监控和智能化电力数…

虚拟机软件Parallels Desktop 19 mac功能介绍

Parallels Desktop 19 mac是一款虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 PD19虚拟机软件具有快速启动和关闭虚拟机的能力&#xff0c;让…

实盘股票杠杆平台排名报告:五大排名和评估一览

本报告旨在根据公开信息和用户反馈&#xff0c;对股票配资公司的五大排名进行深入分析。这些排名包括尚红网、倍悦网、兴盛网、诚利和、嘉正网、广瑞网、富灯网、天创网、恒正网、创通网。 一、尚红网 尚红网在股票配资公司中一直享有盛誉&#xff0c;其资金雄厚&#xff0c;…

Linux操作系统常见指令理解(1)

Linux是一种开源的操作系统&#xff0c;常用于服务器和嵌入式设备。以下是一些常见的Linux指令及其详解&#xff1a; ls&#xff1a;列出目录中的文件和子目录。 cd&#xff1a;改变当前工作目录。 pwd&#xff1a;显示当前工作目录的路径。 mkdir&#xff1a;创建一个新目录。…

告别繁琐开发,轻松玩转无代码!

导语&#xff1a;随着科技的快速发展&#xff0c;无代码开发已成为越来越多人的首选。告别繁琐的开发流程&#xff0c;无代码将让你轻松驾驭各种项目需求&#xff01;本文将带您了解无代码的魅力&#xff0c;以及如何玩转无代码&#xff0c;为您的项目插上腾飞的翅膀&#xff0…

前端-Vue-开发指南

VueJS 开源文档 拉入vscode安装node.js安装vue脚手架components : 组件router&#xff1a;路由创建新组建 &#xff1a;assets&#xff1a; 系统图片存放地址main.js&#xff1a; vue脚手架对象存放地 &#xff08;新的包要放在里面&#xff09;属性 computedslot 插槽error St…

基于Effect的组件设计 | 京东云技术团队

Effect的概念起源 从输入输出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 编程中的Effect起源于函数式编程中纯函数的概念 纯函数是指在相同的输入下&#xff0c;总是产生相同的输出&#xff0c;并且没有任何副作用(side effect)的函数。…

使用Perl脚本编写爬虫程序的一些技术问题解答

网络爬虫是一种强大的工具&#xff0c;用于从互联网上收集和提取数据。Perl 作为一种功能强大的脚本语言&#xff0c;提供了丰富的工具和库&#xff0c;使得编写的爬虫程序变得简单而灵活。在使用的过程中大家会遇到一些问题&#xff0c;本文将通过问答方式&#xff0c;解答一些…

循环神经网络时间序列预测

循环神经网络时间序列预测 循环神经网络用于时间序列预测比较好&#xff0c;先使用股票价格数据集来理解和掌握该算法。 数据来源 数据要先在Tushare注册登录一下&#xff0c;获取足够的积分 注册完之后有100积分&#xff0c;然后个人信息完善一下获取20积分&#xff0c;然后…

网络通信三要素

三要素概述 IP地址&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识。 端口&#xff1a;应用程序在设备中唯一的标识。 协议: 数据在网络中传输的规则&#xff0c;常见的协议有UDP协议和TCP协议。 网络通信过程 A程序通过IP和端口找到B程序&#xff0c;再互相发…

沁恒CH582触摸功耗测试 BleTouchKey

准备用沁恒的CH582 做个低成本的蓝牙锁控&#xff0c;正好ch582 支持14通道的触摸&#xff0c;可以节省一个触摸芯片&#xff0c;测试了下功耗&#xff0c;具体如下 1、在BleTouchKey_Demo中 注释掉tmos_set_event( TouchKey_TaskID, NOTIFY_DATA_EVT); 2、把打印log 给屏蔽掉…

map合并数据

printNodeProperties(node, data, type) {if (type preview) {console.log(333)this.selectedNodes [] // 清空之前收集的节点this.filteredData.forEach((rootNode) > {this.collectPreviewNodes(rootNode) // 递归收集节点})// 所有具有预览功能的节点console.log(具有 …

Gradle安装

文章目录 官网配置环境变量 官网 Gradle官网&#xff1a;https://gradle.org/ Gradle官方下载安装教程页面&#xff1a;https://gradle.org/install/ Gradle官方用户手册&#xff1a;https://docs.gradle.org/current/userguide/userguide.html 注意&#xff1a; 1.SpringBoo…

华为数通方向HCIP-DataCom H12-831题库(多选题:221-240)

第221题 以下哪些项能被正则表达式^30.成功匹配? A、200 100 300 B、100 200 300 C、300 200 100 D、300 100 200 答案:CD 解析: 30.其中的“点”表示的是任何的一个数字,表示的是as-path的开头;所以以300开头的都是满足题目需求的。 第222题 以下哪些项的Community属性能…

Jetson Orin NX 开发指南(3): 安装 ROS 系统

一、前言 由于本专栏主要介绍如何将 Jetson Orin NX 作为自主无人机的机载电脑&#xff0c;因此需要 ROS 操作系统来实现各个模块的衔接&#xff0c;ROS支持在Linux系统上安装部署&#xff0c;因为ROS与Ubuntu兼容性最好&#xff0c;使用它的首选开发平台是Ubuntu&#xff0c;…