使用RestTemplate遇到的問題

2021-10-10 00:16:36 字數 1118 閱讀 9028

問題描述:

1、在使用resttemplate呼叫外部提供的介面時,怎麼調也成功不了(對方返回-9,具體原因未知,可以確定的是走到方法裡面了,該介面有些特殊:雖然用的post請求,但是請求引數組裝到了url上,類似<123>1);

2、位址已經先被我轉義過了,在呼叫urlencoder.encode(url)方法;

3、呼叫 resttemplate public t postforobject(string url, @nullable object request, classresponsetype, object... urivariables)方法。

**如下:

分析:通過打斷點,發現在走到resttemplate#execute(string url,...)方法:

走到

uri expanded = this.geturitemplatehandler().expand(url, urivariables);

**的時候,url特殊字元會轉義,所以導致我傳送的url和介面提供方的收到的url不一致。

解決方法:

1.新建uri,resttemplate public t postforobject(uri uri, @nullable object request, classresponsetype, object... urivariables)方法。

2.不轉義位址,直接呼叫resttemplate public t postforobject(string url,...)方法,使用與可以自己控制是否含有特殊字元的**

3.不用resttemplate,改用別的http框架也可以解決問題(不推薦) 

RestTemplate使用總結

resttemplate的介紹就不說了,總的來說用這個物件可以很方便的模擬乙個http請求。talk is cheap,show me the code,使用的是springboot整合的工程所以以下涉及到的物件都是註解式的宣告和注入,一 宣告resttemplate物件 當然,可以利用註解 bea...

RestTemplate使用總結

resttemplate的介紹就不說了,總的來說用這個物件可以很方便的模擬乙個http請求。talk is cheap,show me the code,使用的是springboot整合的工程所以以下涉及到的物件都是註解式的宣告和注入,一 宣告resttemplate物件 當然,可以利用註解 bea...

使用restTemplate隨筆

使用resttemplate訪問其他介面時 採用post方式傳參 發現服務端接受不到引數 坑了半天 記錄一下 服務端是個servlet 以post接參 所以本地使用mvc模擬了一下 方便除錯 如下 客戶端 如下 test public void test1 不能以map或hashmap代替 否則服務...