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.pswp.cn/diannao/75824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75824.shtml
英文地址,請注明出處:http://en.pswp.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;其功能特性與行業適配性存在顯著差異。本文將從旅游企業核心需求出發&…