resttemplate設(shè)置params的方法
如何使用RestTemplate設(shè)置請(qǐng)求參數(shù)
RestTemplate設(shè)置請(qǐng)求參數(shù)的方式根據(jù)請(qǐng)求類型(GET/POST)和參數(shù)形式(路徑參數(shù)、查詢參數(shù)、JSON請(qǐng)求體)有所不同,以下是具體實(shí)現(xiàn)方法:
一、GET請(qǐng)求參數(shù)設(shè)置
路徑參數(shù)
使用占位符{param},通過Map或可變參數(shù)傳遞:
// 使用Map傳參
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("id", "123");
String result = restTemplate.getForObject("http://example.com/api/{id}", String.class, uriVariables);
// 或使用可變參數(shù)
String result = restTemplate.getForObject("http://example.com/api/{id}", String.class, "123");查詢參數(shù)
使用UriComponentsBuilder構(gòu)建帶參數(shù)的URL:
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://example.com/api/data")
.queryParam("name", "John")
.queryParam("age", 25);
String url = builder.toUriString();
String result = restTemplate.getForObject(url, String.class);二、POST請(qǐng)求參數(shù)設(shè)置
JSON請(qǐng)求體
使用HttpEntity封裝嵌套JSON參數(shù),并設(shè)置請(qǐng)求頭:
// 構(gòu)建嵌套參數(shù)
Map<String, Object> paramMap = new HashMap<>();
Map<String, String> queryMap = new HashMap<>();
queryMap.put("c1", "value1");
paramMap.put("a", "valueA");
paramMap.put("b", queryMap);
// 設(shè)置請(qǐng)求頭
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(paramMap, headers);
// 發(fā)送請(qǐng)求
String response = restTemplate.postForObject("http://example.com/api", entity, String.class);引用示例中的多層嵌套JSON構(gòu)建方式。
表單參數(shù)
使用MultiValueMap傳遞表單數(shù)據(jù):
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("username", "admin");
formData.add("password", "123456");
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(formData, headers);
ResponseEntity<String> response = restTemplate.postForEntity("http://example.com/login", entity, String.class);三、配置RestTemplate超時(shí)(可選)
通過配置類設(shè)置連接和讀取超時(shí):
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(10000); // 10秒
factory.setReadTimeout(10000); // 10秒
return new RestTemplate(factory);
}
}引用配置類示例。
四、處理復(fù)雜響應(yīng)
解析JSON響應(yīng)并提取數(shù)據(jù):
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
JSONObject jsonResponse = new JSONObject(response.getBody());
if ("0000".equals(jsonResponse.getJSONObject("parameter").getString("code"))) {
String result = jsonResponse.getString("result");
}引用響應(yīng)處理方法。
到此這篇關(guān)于resttemplate設(shè)置params的方法的文章就介紹到這了,更多相關(guān)resttemplate設(shè)置params內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot3 RestTemplate配置與使用詳解
- SpringBoot中restTemplate請(qǐng)求存在亂碼問題的解決方法
- RestTemplate報(bào)錯(cuò)400 Bad Request的解決方案
- restTemplate未設(shè)置連接數(shù)導(dǎo)致服務(wù)雪崩問題以及解決
- Resttemplate上傳文件500異常的原因及解決方法
- SpringBoot使用RestTemplate實(shí)現(xiàn)HTTP請(qǐng)求詳解
- RestTemplate發(fā)送form-data請(qǐng)求上傳rul資源文件及對(duì)象參數(shù)方式
- springboot中RestTemplate配置HttpClient連接池詳解
相關(guān)文章
Java中的interrupted()和isInterrupted()
這篇文章主要介紹了Java中的interrupted()和isInterrupted()摸下面文章圍繞interrupted()和isInterrupted()的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴樂意參考下面下面文章具體價(jià)紹,希望對(duì)大家有所幫助2021-11-11
java開發(fā)gui教程之jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體
這篇文章主要介紹了java開發(fā)gui教程中jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體的示例,需要的朋友可以參考下2014-03-03
idea運(yùn)行main方法或Test避免編譯整個(gè)應(yīng)用的實(shí)現(xiàn)方法
這篇文章主要介紹了idea運(yùn)行main方法或Test避免編譯整個(gè)應(yīng)用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
Java防止文件被篡改之文件校驗(yàn)功能的實(shí)例代碼
這篇文章主要介紹了Java防止文件被篡改之文件校驗(yàn)功能,本文給大家分享了文件校驗(yàn)和原理及具體實(shí)現(xiàn)思路,需要的朋友可以參考下2018-11-11
Spring-cloud Config Server的3種配置方式
這篇文章主要介紹了Spring-cloud Config Server的3種配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring中自定義數(shù)據(jù)類型轉(zhuǎn)換的方法詳解
Spring3引入了一個(gè)core.onvert包,提供一個(gè)通用類型轉(zhuǎn)換系統(tǒng)。在Spring容器中,可以使用這個(gè)系統(tǒng)作為PropertyEditor實(shí)現(xiàn)的替代,將外部化的bean屬性值字符串轉(zhuǎn)換為所需的屬性類型。本文將詳解這一系統(tǒng)的使用方法,需要的可以參考一下2022-06-06
在Linux系統(tǒng)上升級(jí)Java版本的兩種方法步驟
由于項(xiàng)目升級(jí),需要將JDK7升級(jí)到JDK8,升級(jí)JDK的同時(shí)也要升級(jí)一些其他的版本,下面這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)上升級(jí)Java版本的兩種方法步驟,需要的朋友可以參考下2024-09-09

