RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時,你可以通過不同的方式發送JSON或表單數據(application/x-www-form-urlencoded)。同時,處理接口錯誤狀態碼(如400)和返回null的情況也是很重要的。以下是一些示例代碼,展示了如何使用RestTemplate發送不同格式的數據,并處理錯誤。

發送JSON數據

要發送JSON數據,你需要將你的對象轉換為JSON字符串,并設置正確的Content-Type頭為application/json。你可以使用HttpEntityHttpHeaders來構建請求,并使用RestTemplatepostForObjectpostForEntity方法發送請求。

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;// ...RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);// 假設你有一個名為MyObject的對象,你想將它發送為JSON
MyObject myObject = new MyObject();
// ... 設置myObject的屬性String jsonPayload = new ObjectMapper().writeValueAsString(myObject); // 使用Jackson庫將對象轉換為JSON字符串HttpEntity<String> entity = new HttpEntity<>(jsonPayload, headers);String url = "http://example.com/api/resource";
ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);if (response.getStatusCode().is2xxSuccessful()) {// 處理成功的響應
} else {// 處理錯誤,例如狀態碼400if (response.getStatusCode() == HttpStatus.BAD_REQUEST) {// 錯誤處理邏輯,例如打印錯誤消息或記錄日志System.err.println("Bad request: " + response.getBody());}// 注意:如果響應體為null,response.getBody()將返回null
}

發送表單數據

要發送表單數據,你可以使用MultiValueMap來存儲表單字段和值,并使用formHttpMessageConverter

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;// ...RestTemplate restTemplate = new RestTemplate();
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("key1", "value1");
map.add("key2", "value2");HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);String url = "http://example.com/api/resource";
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);// 錯誤處理與上述相同

處理接口錯誤狀態碼400和null響應體

如上所示,你可以通過檢查ResponseEntitygetStatusCode方法來處理不同的HTTP狀態碼。對于狀態碼400(Bad Request),你可以根據需要執行特定的錯誤處理邏輯。

如果響應體為null,response.getBody()將返回null。在這種情況下,你可能需要根據你的業務邏輯來決定如何處理它。例如,你可以記錄一個錯誤消息,或者拋出一個異常來指示調用者發生了問題。

請注意,上述示例使用了Jackson庫來將對象轉換為JSON字符串。如果你的項目中還沒有包含Jackson,你需要在你的pom.xmlbuild.gradle中添加相應的依賴項。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11939.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…

【Python】Python中類的__iter__()方法

在Python中&#xff0c;__iter__ 方法是一個特殊的方法&#xff0c;它用于定義一個對象的迭代器行為。這個方法是面向對象編程中實現可迭代對象&#xff08;即支持迭代的對象&#xff09;的一部分。當你創建一個類&#xff0c;并且希望其實例能夠在例如 for 循環中被迭代時&…

Hive-拉鏈表的設計與實現

Hive-拉鏈表的設計與實現 在Hive中&#xff0c;拉鏈表專門用于解決在數據倉庫中數據發生變化如何實現數據存儲的問題。 1.數據同步問題 Hive在實際工作中主要用于構建離線數據倉庫&#xff0c;定期的從各種數據源中同步采集數據到Hive中&#xff0c;經過分層轉換提供數據應用…

MYSQL 存儲過程 函數

ddldml ? CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 學號,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2)…

【JAVA SE】初識JAVA

??歡迎大家來到Celia的博客?? &#x1f389;&#x1f389;創作不易&#xff0c;請點贊關注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所屬專欄&#xff1a;JAVA 個人主頁&#xff1a;Celias blog~ 目錄 ?編輯 一、關于JAVA 1.1 JAVA語言簡介 1.2 語言優勢 1…

鏈表常見OJ題

目錄 題目一&#xff1a;移除鏈表元素 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求 &#xff08;3&#xff09;題解 題目二&#xff1a;反轉鏈表 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求?編輯 &#xff08;3…

藍橋杯備戰.19有獎問答dfs

P9230 [藍橋杯 2023 省 A] 填空問題 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include<bits/stdc.h> using namespace std; #define endl \n //#define int long long const int N 2e510; int a[N],w[N]; int ans 0; void dfs(int score,int cnt) {if(cnt>3…

項目9-網頁聊天室1(注冊+Bycrpt加密)

1.準備工作 1.1.前端頁面展示 1.2 數據庫的建立 我們通過注冊頁面&#xff0c;考慮如何設計用戶表數據庫。 用戶id&#xff0c;userId用戶名&#xff0c;唯一&#xff0c;username用戶密碼&#xff0c;password&#xff08;包括密碼和確認密碼ensurePssword【數據庫沒有該字段…

【簡單介紹下Milvus】

&#x1f308;個人主頁: 程序員不想敲代碼啊 &#x1f3c6;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f44d;點贊?評論?收藏 &#x1f91d;希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff0c;讓我們共…

網絡3--網絡通信的深度理解(端口號)

網絡通信的進一步理解 兩個主機間進行通信&#xff0c;其實是兩個主機間的軟件進行通信&#xff0c;軟件也就是可執行程序&#xff0c;運行時就是進程&#xff0c;所以也為進程間通信。 進程間通信需要共享資源&#xff0c;這里兩個主機間的共享資源是網絡&#xff0c;利用的是…

Visual Studio生成C++的DLL文件(最簡單版)

前言 當你在使用C編寫一些可重用的代碼時&#xff0c;將其打包成一個動態鏈接庫&#xff08;DLL&#xff09;可以使其更容易地被其他項目或者程序調用和使用。Visual Studio提供了一種簡單的方式來生成C的DLL文件。下面是一個關于如何在Visual Studio中生成C的DLL文件的簡單教…

【 第一性原理計算方法及應用】

第一性原理計算方法及應用述

對接極速行情丨DolphinDB MDL 行情插件使用指南

通聯數據依托于金融大數據&#xff0c;結合人工智能技術為投資者提供個性化、智能化、專業化投資服務&#xff0c; MDL 則是通聯數據提供的高頻行情數據服務。DolphinDB 提供了能夠從 MDL 服務器獲取高頻行情數據的 DolphinDB MDL 插件&#xff0c;幫助用戶方便地通過 DolphinD…

算法day06

第一題 1658. 將 x 減到 0 的最小操作數 如題上述&#xff1a; 本題原來的意思給定一個數字x&#xff0c;從數組的左邊或者右邊 使用x減去數組中的數字&#xff0c;直到減去最后一個數字為0時&#xff0c;返回最小的操作次數&#xff1b;如果最終減去的數組中的數字之后不能得…

HR系統組合漏洞挖掘過程

前言 某天在項目中遇到了一個奇怪的人才管理系統&#xff0c;通過FOFA&#xff08;會員可在社區獲取&#xff09;進行了一番搜索&#xff0c;發現了該系統在互聯網上的使用情況相當廣泛。于是&#xff0c;我開始了后續的審計過程。 在搜索過程中&#xff0c;我偶然間找到了一份…

「TypeScript系列」TypeScript 基礎類型

文章目錄 一、TypeScript 基礎類型1. **Number**: 用于表示數字。可以是整數或浮點數。2. **String**: 用于表示文本類型的數據。3. **Boolean**: 表示邏輯值&#xff1a;true 或 false。4. **Array**: 表示一組值。TypeScript 使用泛型&#xff08;generics&#xff09;來定義…

Mysql存儲引擎對比

存儲引擎InnoDBMyISAM文件存儲結構.frm文件&#xff1a;存放表結構的定義信息 .ibd文件或.ibdata文件&#xff1a;存放InnoDB數據&#xff08;數據和索引&#xff09;【獨享表空間】每個表一個.ibd文件【共享表空間】所有表使用一個.ibdata文件- .frm文件&#xff1a;存放表結構…

Nginx靜態壓縮和代碼壓縮,提高訪問速度!

一、概述 基于目前大部分的應用&#xff0c;都使用了前后端分離的框架&#xff0c;vue的前端應用&#xff0c;也是十分的流行。不知道大家有沒有遇到這樣的問題&#xff1a; 隨著前端框架的頁面&#xff0c;功能開發不斷的迭代&#xff1b;安裝的依賴&#xff0c;不斷的增多&a…

機器學習【簡述】

什么是機器學習 機器學習研究的是計算機怎么模擬人類的學習行為&#xff0c;以獲取的知識或技能&#xff0c;并重新組織已有的知識結構使之不斷改善自身。簡單一點說&#xff0c;就是計算機從數據中學習初規律和模式&#xff0c;以應用在新數據上做預測的任務。近年來互聯網數…

無人機的用途

無人機&#xff0c;即無人駕駛飛機&#xff0c;其用途廣泛且多樣&#xff0c;涉及到多個領域。 在農業領域&#xff0c;無人機通過搭載各種傳感器和相機&#xff0c;可以對農田進行空中巡視&#xff0c;收集農田數據&#xff0c;如土壤含水量、氣溫、濕度等&#xff0c;以及植…