RestTemplate调用Http方法
场景:前端调用后端的接口完成设备参数的更新,后端在接口代码中需要调用设备端提供的接口来完成设备参数的更新。
RestTemplate 是用于同步client端访问 Restful 服务的一个核心类
默认使用 JDK 提供的包去建立HTTP连接
为每种 HTTP 请求都实现了相关的请求封装方法,根据HTTP的六个方法制定
| HTTP method | RestTemplate methods |
|---|---|
| DELETE | delete |
| GET | getForObject |
| getForEntity | |
| HEAD | headForHeaders |
| OPTIONS | optionsForAllow |
| POST | postForLocation |
| postForObject | |
| PUT | put |
| any | exchange |
| execute |
首先编写RestTemplate的配置类
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;import java.util.ArrayList;
import java.util.List;/*** RestTemplate 配置类* @author */
@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) {//先获取到converter列表List<HttpMessageConverter<?>> converters = builder.build().getMessageConverters();for(HttpMessageConverter<?> converter : converters){//因为我们只想要jsonConverter支持对text/html的解析if(converter instanceof MappingJackson2HttpMessageConverter){try{//先将原先支持的MediaType列表拷出List<MediaType> mediaTypeList = new ArrayList<>(converter.getSupportedMediaTypes());//加入对text/html的支持mediaTypeList.add(MediaType.TEXT_HTML);mediaTypeList.add(MediaType.TEXT_PLAIN);//将已经加入了text/html的MediaType支持列表设置为其支持的媒体类型列表((MappingJackson2HttpMessageConverter) converter).setSupportedMediaTypes(mediaTypeList);}catch(Exception e){e.printStackTrace();}}}return builder.build();}
}
由于设备端接口接收的参数为JSON类型,需要在后端将对象转换为JSON对象,并添加请求头
@Autowiredprivate RestTemplate restTemplate;/*** 获取相机参数** @return*/@Overridepublic R getOrUpdateParams(CameraParameters cameraParameters) {//调用RestTemplate 向设备端发送http请求String url = "http://xx.xx.xx.x/8080/update_param";HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);JSONObject jsonObject = new JSONObject(cameraParameters);HttpEntity<String> httpEntity = new HttpEntity<>(jsonObject.toString(), headers);ResponseEntity<CameraParameters> entity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, CameraParameters.class); }return R.ok();}相关文章:
RestTemplate调用Http方法
场景:前端调用后端的接口完成设备参数的更新,后端在接口代码中需要调用设备端提供的接口来完成设备参数的更新。 RestTemplate 是用于同步client端访问 Restful 服务的一个核心类 默认使用 JDK 提供的包去建立HTTP连接 为每种 HTTP 请求都实现了相关的…...
软考笔记--操作系统-内存管理
任何程序和数据都必须占用内存空间后才能执行,因此,内存管理的好坏直接影响整个操作系统的性能。操作系统的任务之一是尽可能地方便用户使用和提高内存的利用率。同时,内存管理也是多道程序设计系统的关键支撑。内存管理的功能主要包括以下几…...
Spring Boot整合日期转换器(Converter)和拦截器(HandlerInterceptor)
添加日期转换器(Converter) public class DataConverter implements Converter<String, Date> {Overridepublic Date convert(String s) {try {SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-MM-dd");return simpleD…...
100天精通Python(实用脚本篇)——第112天:图像处理批量给图片添加水印,防盗必备建议收藏!!!(附上脚本代码)
文章目录 专栏导读1. 图片设置水印的意义?2. 需求3. 实现效果4. 添加全屏水印4.1 单张图片添加全屏水印4.2 批量给多张图片添加全屏水印5. 添加指定位置水印5.1 模块介绍5.2 批量添加脚本实现专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零…...
SpringMVC(全局异常处理.动态接收Ajax请求)
1.全局异常处理 1 异常处理器 基于AOP 用户发起请求, SpringMVC接受请求, SpringMVC加载静态资源问题说明 请求过去了,但没有处理 规则说明:静态资源进入SpringMVC框架之后,没有找到要怎样处理静态资源的方法,所以他们就不解决,也就不显示 解决方法:SpringMVC基于Servlet处理…...
【FastAPI】P1 简单实现 a+b
目录 准备工作代码运行 说明:本文通过 FastAPI 实现返回两个参数 ab 的值; 准备工作 默认读者已准备完善 Python IDE工具以及包管理工具。 首先,需要安装 fastapi 和 uvicorn 库,如果没有请使用 pip 进行安装: pip…...
C#设计模式教程(4):单例模式
单例模式(Singleton Pattern)是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个访问它的全局访问点。在C#中实现单例模式通常有几种不同的方法,这里介绍几种典型的实现方式。 C# 单例模式的各种实现方式 1. 懒汉式(线程不安全) public class Singleton {p…...
常用的git diff命令用法汇总和示例
文章目录 1. 查看工作目录和暂存区的差异2. 查看暂存区和最后一次提交的差异3. 查看两个提交之间的差异4. 查看特定文件的更改5. 查看特定文件在两个提交之间的差异6. 查看分支之间的差异7. 查看某次提交的更改8. 限制diff输出的格式9. 查看一定时间范围内的更改 Git的diff命令…...
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE 写在最前面需求分析直接用Python打包为什么大?为什么要使用conda环境? 将Python脚本打包为一个独立的应用程序1. 编写Python脚本:初步功能实现2. 初步图形用户界面ÿ…...
Windows系统字体尺寸学习
调用GetTextMetrics来获得字体尺寸信息, 函数返回设备描述表中当前选定的字体信息; 返回值到TEXTMETRIC类型的结构中; 返回字段值的单位取决于当前设备描述表映射方式;默认映射方式是MM_TEXT,值的单位是像素; 前7个字…...
SSH隧道技术
SSH隧道 简介 SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途,包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。 应用: 端口转发:SSH隧道可以将本地端口转发到远程主机上…...
支付功能的实现
1.商户调用第三方支付服务的主要步骤流程? 1.1 表单跳转 前端点击提交支付,请求后端支付接口 支付接口通过阿里api生成表单信息返回给前端页面 同步回调,异步回调参数 请求参数:总金额,外部订单号 公共参数࿱…...
SpringMVC JSON数据处理见解6
6.JSON数据处理 6.1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据: <!--spring-json依赖--> <dependency><groupId>com.f…...
python 读写kafka
1. 安装pykafka pip install pykafka2. 生产者 from pykafka import KafkaClientdef get_kafka_producer(hosts, topics):client KafkaClient(hostshosts)print(client.topics)topic client.topics[topics]producer topic.get_producer()return producer 测试 hosts 19…...
VBA: 如何用VBA遍历文件夹(含子文件夹)里的所有文件
目录 0 原始文件 1 step1:遍历文件夹(不包含子文件)内的文件数 2 step2: 遍历文件夹内的所有子文件夹的名字 3 step3 遍历文件夹的(含子文件)内的所有文件 4 step4 遍历文件夹的(含子文件)内的所有文…...
又快又好! 基于Consistency Model的一步采样歌声转换模型CoMoSVC已开源
在2023年,AI虚拟歌手如AI孙燕姿等已经引起了广泛的关注,而大多数应用都是基于开源框架SoVITS。最近,香港科技大学和微软亚洲研究院推出了一种基于Consistency Model的歌声转换系统CoMoSVC,它在歌声转换速度上与基于Flow的SoVITS系…...
服务器——配置免密登录
一、生成本机的密钥文件 打开本机的终端,输入 ssh-keygen,默认一路点enter。 将生成的 id_rsa.pub 公钥文件,复制一份改一个名称,比如改名成 id_rsa_test.pub。 二、将生成的公钥文件发送到服务器对应账户的.ssh文件夹下 将改…...
GoZero微服务个人探索之路(三)Go-Zero官方rpc demo示例探究
官方网址:https://go-zero.dev/docs/tasks/cli/grpc-demo 项目结构 demo包 两个文件均为protoc-gen-go-grpc自动生成构成一个完整的 gRPC 服务的定义和实现 democlient包 demo.go goctl生成的客户端代码 Request 和 Response 别名: 定义了 Request 和…...
1月下半笔记(个人向)
最近才开始看d2l(这种东西早该在两年前看的,拖到现在了) 为了做项目还得学一手OpenGL(被windows安装GLFW逼疯了) 1.15 打完ICPC EC final回来,也许可以出一篇博客写下简单的题解。 对蛋白质相似空间子结…...
ChatGpt使用技巧
通用类技巧 角色扮演 比如让ChatGpt扮演500强营销专家 告诉ChatGpt你的身份。初学者、或是有一定能力、知识的学习者等 限制ChatGpt回答长度 100~200字之间 让ChatGpt一步一步思考 他会预测下一个单词,根据prompt进行生成 明确你的要求和目的 说清楚问题&#x…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
