RestTemplat中關(guān)于getForobject方法的使用
RestTemplat中g(shù)etForobject方法使用
在接短信平臺的接口時(shí),使用了RestTemplate的getForObject方法,自以為會自動拼接參數(shù),所以只傳了url和保存參數(shù)的map,但是多次提交失敗,以為是中間轉(zhuǎn)碼出錯
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
? ? ? ? return restTemplate.getForObject(url, responseType, uriVariables);
}經(jīng)過查看源碼,發(fā)現(xiàn)最后并沒有把參數(shù)拼接到url上,然后找了資料才發(fā)現(xiàn)了正確用法,尷尬~原來不是自動把map的key和value拼接到url上面,而是需要自己先指定好。
即:
http://localhost:8080/shortmessageservice.asmx/Send?sysName={sysName}&phoneNumbers={phoneNumbers}&content={content}&priority={priority}要用占位符指定到參數(shù)對應(yīng)的key,和自定義的map一樣,使用getForObject方法即可成功把參數(shù)拼接上去。
//map的定義
? ? Map<String,String> request = new HashMap<>();
? ? request.put("sysName","username");
? ? request.put("phoneNumbers","13800138000");
? ? request.put("content","內(nèi)容");
? ? request.put("priority", "getforobject");RestTemplate關(guān)于getForObject()的正確用法
在使用RestTemplate的getForObject()方法時(shí)一直報(bào)錯,原來是因?yàn)槭褂胢ap傳參需要固定RestTemplate訪問的url格式。
比如我想攜帶appId和appKey這兩個(gè)參數(shù),就得在url里面顯示聲明出來,特此記錄一下
解決
RestTemplate restTemplate = null;
InfoResponse response = null;
restTemplate = GenericObjectPoolUtils.borrowObject(RestTemplate.class);
Map<String, String> hashMap = new HashMap<>(5);
hashMap.put("appId", appId);
hashMap.put("appKey", appKey);
response = restTemplate.getForObject(
? ? ? ? "http://localhost:8083/api/getinfo?appId={appId}&appKey={appKey}"
? ? ? ? InfoResponse.class, hashMap
);總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea報(bào)錯:java程序包c(diǎn)om.github.xiaoymin.knife4j.spring.annotations
這篇文章主要介紹了idea報(bào)錯:java程序包c(diǎn)om.github.xiaoymin.knife4j.spring.annotations不存在問題解決,需要的朋友可以參考下2023-06-06
SpringBoot Java后端實(shí)現(xiàn)okhttp3超時(shí)設(shè)置的方法實(shí)例
Okhttp的使用沒有httpClient廣泛,網(wǎng)上關(guān)于Okhttp設(shè)置代理的方法很少,下面這篇文章主要給大家介紹了關(guān)于SpringBoot Java后端實(shí)現(xiàn)okhttp3超時(shí)設(shè)置的相關(guān)資料,需要的朋友可以參考下2021-10-10
Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn)
這篇文章主要介紹了Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
一個(gè)例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用
synchronized是Java里的一個(gè)關(guān)鍵字,起到的一個(gè)效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時(shí)禁止指令重排序和保證內(nèi)存的可見性,下面這篇文章主要給大家介紹了關(guān)于如何通過一個(gè)例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用的相關(guān)資料,需要的朋友可以參考下2022-10-10
springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式
這篇文章主要介紹了springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java Socket編程筆記_動力節(jié)點(diǎn)Java學(xué)院整理
Socket對于我們來說就非常實(shí)用了。下面是本次學(xué)習(xí)的筆記。主要分異常類型、交互原理、Socket、ServerSocket、多線程這幾個(gè)方面闡述2017-05-05

