天天看點

springboot中使用restemplate,請求接口會将url參數的%編碼為%25問題解決前言請求代碼解決方法

前言

在開發過程中,通過resttemplate調接口,然後發現url中參數會将%編碼為%25,導緻接收方接收到的參數值改變

請求代碼

url中拼接了參數,如

sign = gshq2%2BjmBizK%2Bq0Ugec%2BYnmVH5V%2FXRUHG6ivYgCqdSC09jpdV%2FF41pA5R1xUqwkWCGan8YWj%2Fna419fslb0WIC0NAu6XCIakq7Rq
           

接收方接收到的參數為

sign = gshq2%252BjmBizK%252Bq0Ugec%252BYnmVH5V%252FXRUHG6ivYgCqdSC09jpdV%252FF41pA5R1xUqwkWCGan8YWj%252Fna419fslb0WIC0NAu6XCIakq7Rq
           

經過這兩個參數對比分析,我們可以發現,url參數中的%被編碼成了%25

解決方法

一、将參數放到post請求體

我們不再使用參數放在url上傳遞,而是改為使用請求體的方式傳遞,就可以避免這個問題産生

二、自己封裝URI

将以上代碼改為這樣,就可以正常了。

URI uriObj = URI.create(url + myparams + signUrl);
            entity = restTemplate.postForEntity(uriObj , request, String.class);