【問題管理】-- restTemplate請求get方式中url包含+、空格、%、_等特殊符號

在實際項目中,我們經常會遇到get方式進行參數傳遞,而前端到後臺,後臺調用第三方接口API,這裏往往涉及到很多編碼轉換的場景,前後端編碼方式不一致,tomcat服務端編碼設置遠程API接口編碼不一致,多種方式都有可能在url傳輸的過程中涉及到傳遞的參數(尤其是特殊字符)在url請求上轉換不一致導致請求異常或者請求到不想要的東西。這裏就需要我們使用如下方式進行特殊字符的轉換:

1.轉義特殊字符

將特殊字符進行編碼轉義替換:

這裏一般是採用後端接口Vo層set方法進行replaceAll替換特殊字符,轉義替換爲不能被瀏覽器轉換的編碼格式:

+ (URL 中+號表示空格) ——>   %2B   
空格 (URL中的空格可以用+號或者編碼) ——>   %20 
/ (分隔目錄和子目錄) ——>  %2F     
? (分隔實際的URL和參數) ——>  %3F     
% (指定特殊字符) ——>  %25     
# (表示書籤) ——>  %23     
& (URL中指定的參數間的分隔符)——>  %26     
= (URL中指定參數的值)——>  %3D

注:

HTTP協議中 + 號轉譯爲 %2B
HTTPS協議中 + 號轉譯爲 %20

2.使用POST方式進行提交

使用post進行restTemplate方式進行url參數方式提交,避免url在編碼上的轉換

3.sql語句中使用escape

escape語句如下,表示/後面的%不再作爲轉義字符,而是當做'%'這個字符來進行匹配:

select username from gg_user where username like '%xiao/%%' escape '/';

具體escape用法可以查看另一篇博文:

sql語句中escape的用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章