RestTemplate远程调用接口方式

1.Post(body空参)

         也就是说需要给一个空的json

         代码:

String getDeviceUrl = this.MOVABLE_URL + "detected-data/getMachineLists";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("token",token);
// 请求体
HttpEntity<String> requestEntity = new HttpEntity<>("{}", headers);
String resultString = restTemplate.postForObject(getDeviceUrl, requestEntity,String.class);
JSONObject jo = JSONObject.fromObject(resultString);

2.Post(表单)

        表单不能给json参数,不然被调用方接收不到参数

        代码:

String url = this.INTERFACE_CLIENT_URL + "/jkglApi/saveLog";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头 指定Content-Type为application/x-www-form-urlencoded
HttpHeaders headers = new HttpHeaders();
//headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);// 构建参数
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("jkglApiCode", interfaceLog.getJkglApiCode());
params.add("ipAddress", interfaceLog.getIpAddress());
params.add("syncDate", interfaceLog.getSyncDate());
params.add("createDate", interfaceLog.getCreateDate());
params.add("statusSync", interfaceLog.getStatusSync().toString());// 设置请求参数
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(params, headers);// 发送POST请求
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);String resultString = response.getBody();
JSONObject jo = JSONObject.fromObject(resultString);

        使用RestTemplate进行表单传参的注意事项
在使用 RestTemplate 进行表单传参时,有一些注意事项需要我们注意。
1.设置Content-Type为application/x-www-form-urlencoded
在发送POST请求时,我们需要设置请求头的Content-Type为 application/x-www-fomm-urlencoded,表示请求体的内容是表单参数。通过 HtpHeaders 类的 setContentType()方法可以实现此功能。
2.使用MultiValueMap存储表单参数
MuivalueMap 是Spring框架提供的一个接口,它继承自 Map 接口,并提供了一些额外的方法,用于存储键值对,在使用 RestTemplate 发送表单参数时,我们可以使用 MutValueMap 来存储表单参数,通过 add0 方法添加键值对。
3.使用HttpEntity封装请求体内容HtpEntty 是 RestTemplate 发送HTTP请求时的一个重要类,它用于封装请求体内容。在发送POST请求时,我们需要创建一个 HpEnity 对象,并将 MultiValueMap 对象和 HttpHeaders 对象作为参数传递进去。 

 

3.Post(表单,方式2)

        代码:  这种好像是将参数放到url后面,按理说post不应该这样,但不知道为什么,可以正常访问,被调用方也能获取,不知道为啥....

String url = this.MOVABLE_URL + "users/login";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 构建参数
Map<String, String> params= new HashMap();
params.put("username", MOVABLE_USERNAME);
params.put("password", MOVABLE_PASSWORD);
// 2. 构建 URL
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
params.forEach(builder::queryParam);
// 请求
ResponseEntity<String> response = restTemplate.exchange(builder.build().toUri(),HttpMethod.POST,new HttpEntity<>(headers),String.class);
String resultString = response.getBody();
JSONObject jo = JSONObject.fromObject(resultString);

持续更新....

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

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

相关文章

ar头显和眼镜图像特效处理

使用一个线程从摄像头或者其他设备循环读取图像数据写入链表&#xff0c;另一个线程从链表循环读取数据并做相应的特效处理&#xff0c;由于写入的速度比读取的快&#xff0c;最终必然会因为写入过快导致线程读写一帧而引发冲突和数据帧正常数据帧被覆盖。最好使用共享内存&…

mysql--socket报错

错误原因分析 MySQL 服务未运行&#xff08;最常见原因&#xff09; 错误中的 (2) 表示 “No such file or directory”&#xff0c;即 /tmp/mysql.sock 不存在这通常意味着 MySQL 服务器根本没有启动 socket 文件路径不匹配 客户端尝试连接 /tmp/mysql.sock但 MySQL 服务器可…

labview加载matlab数据时报错提示:对象引用句柄无效。

1. labview报错提示 labview加载mat数据时报错提示&#xff1a;对象引用句柄无效。返回该引用句柄的节点可能遇到错误&#xff0c;并没有返回有效的引用句柄。该引用句柄所指的存储可能在执行调用之前已关闭。报错提示如下&#xff1a; 这是由于labview缺少matlab MathWorks导…

面试计算机操作系统解析(一中)

判断 1. 一般来说&#xff0c;先进先出页面置换算法比最近最少使用页面置换算法有较少的缺页率。&#xff08;✘&#xff09; 正确答案&#xff1a;错误解释&#xff1a;FIFO&#xff08;先进先出&#xff09;页面置换算法可能导致“Belady异常”&#xff0c;即页面数增加反而…

如何防御TCP洪泛攻击

TCP洪泛攻击&#xff08;TCP Flood Attack&#xff09;是一种常见的分布式拒绝服务&#xff08;DDoS&#xff09;攻击手段&#xff0c;以下是其原理、攻击方式和危害的详细介绍&#xff1a; 定义与原理 TCP洪泛攻击利用了TCP协议的三次握手过程。在正常的TCP连接建立过程中&a…

20250330 Pyflink with Paimon

1. 数据湖 2. 本地安装Pyflink和Paimon 必须安装Python 3.11 Pip install python -m pip install apache-flink1.20.1 需要手动加入这两个jar 测试代码&#xff1a; import argparse import logging import sys import timefrom pyflink.common import Row from pyflink.tab…

-PHP 应用SQL 盲注布尔回显延时判断报错处理增删改查方式

#PHP-MYSQL-SQL 操作 - 增删改查 1 、功能&#xff1a;数据查询(对数据感兴趣&#xff09; 查询&#xff1a; SELECT * FROM news where id$id 2 、功能&#xff1a;新增用户&#xff0c;添加新闻等&#xff08;对操作的结果感兴趣&#xff09; 增加&#xff1a; INSERT INT…

【学习记录】大模型微调之使用 LLaMA-Factory 微调 Qwen系列大模型,可以用自己的数据训练

一、LoRA微调的基本原理 1、基本概念 LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于大模型微调的技术&#xff0c;通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中&#xff0c;LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW&#xff0c;从而减少需…

Vue 使用 xlsx 插件导出 excel 文件

安装与引入 安装 npm install xlsx npm install file-saver # 或者 yarn add xlsx yarn add file-saver 引入 import * as XLSX from xlsx; import FileSaver from file-saver 基本功能 读取 Excel 文件 // 读取文件内容 const workbook XLSX.readFile(path/to/file.xl…

vulntarget_a 训练笔记

win 7 权限 利用任意文件上传 getshell POST /module/ueditor/php/action_upload.php?actionuploadfile HTTP/1.1 User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) Accept: */* Accept-Language: zh-CN,zh;q0.9 Connectio…

无人机螺旋桨平衡标准

螺旋桨平衡是确保无人机(UAV)平稳运行、可靠性和使用寿命的关键过程。螺旋桨的不平衡会导致振动、噪音&#xff0c;并加速关键部件的磨损&#xff0c;从而对飞行性能产生负面影响。 ISO 21940-11:2016标准为旋翼平衡提供了一个广泛引用的框架&#xff0c;定义了可接受的不平衡…

既生瑜何生亮?Nginx RTMP 模块与 SRS RTMP服务器技术对比

在实时视频流的场景中&#xff0c;RTMP 协议作为一种传统且高效的流媒体传输协议&#xff0c;广泛应用于各类直播和点播系统。两款流行的开源 RTMP 服务器分别是基于 Nginx 的 Nginx RTMP 模块 和 SRS&#xff08;Simple Real-Time Server&#xff09;。这两者都在流媒体行业有…

MATLAB 批量移动 TIF 文件至分类文件夹

文章目录 前言一、步骤二、代码 前言 本代码用于从指定的源文件夹 (sourceFolder) 中筛选所有 .tif 文件&#xff0c;并根据文件名的特定关键词&#xff08;Daynight 和 FDI&#xff09;将其分类移动到相应的目标文件夹 (targetDaynightFolder 和 targetFDIFolder)。 一、步骤…

重温Ubuntu 24.04 LTS

用户调整 # 创建新用户 sudo adduser newusername # 设置新用户的密码 sudo passwd newusername # 将新用户添加到 sudo 组 sudo usermod -aG sudo newusername # 修改ssh访问权限 sudo nano /etc/ssh/sshd_config # 将新用户加入&#xff0c;此时root将无法访问 AllowUsers n…

AWS Lambda 集成更新详解:打造无缝云函数体验

引言 AWS Lambda 作为一种无服务器计算服务,让开发者能够运行代码而无需配置或管理服务器。随着 AWS 不断优化其服务,Lambda 的集成方式也在不断更新和改进。本文将深入探讨 Lambda 的最新集成选项,帮助您充分利用这一强大的无服务器计算平台。 Lambda 集成类型概述 从图…

基于Kubernetes部署Prometheus监控平台

#作者&#xff1a;stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…

Android之uCrop (裁剪) 的基本使用资料

Android 拍照、选择图片并裁剪 uCrop裁剪 uCrop裁剪2 uCrop裁剪3 1.权限检查 private static final int REQUEST_CAMERA_PERMISSION 333; private void requestCameraPermission() {if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)! …

STM32基础教程——输入捕获模式测量PWM频率

目录 前言 技术实现 原理图 连线图 代码实现 内容要点 PWM基本结构 开启外设时钟 配置GPIO端口 配置时基单元 初始化输出比较单元 输出比较通道重映射 输入捕获功能初始化 计算捕获PWM的频率 实验结果 问题记录 前言 IC&#xff08;Input Capture&#xff09;输…

基于网启PXE服务器的批量定制系统平台(详细版)

项目说明 该项目共分为2个子项目&#xff0c;由iventoy和定制安装两部分组成 该项目旨在复习巩固系统服务部署使用、shell编程等知识&#xff0c;旨在让学生增加知识面&#xff0c;提高项目实习经历&#xff0c;充实简历 项目背景&#xff1a; 公司新购了一批服务器和台式机…

旅游CMS选型:WordPress、Joomla与Drupal对比

内容概要 在旅游行业数字化转型进程中&#xff0c;内容管理系统&#xff08;CMS&#xff09;的选择直接影响网站运营效率与用户体验。WordPress、Joomla和Drupal作为全球主流的开源CMS平台&#xff0c;其功能特性与行业适配性存在显著差异。本文将从旅游企业核心需求出发&…