前言
在開發過程中,通過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);