iOS Swift URL中未對+號編碼導致服務把+號解碼為空格問題

將字符串作為參數(shù)拼接在URL后的時候,+號在iOS端未被編碼,導致服務接收到參數(shù)時解碼,將+號解碼為空格,未能正確獲取數(shù)據(jù)。

解決辦法:將特殊字符串(比如+、=號等等)手動編碼

// 原url
let srcUrl = "https://www.example.com/index.html"
// 要拼接的參數(shù)(dictionary轉json字符串)
let paramValue = "RScq3bv+xwg=="
// 1、先處理要拼接的參數(shù)
let allowedCharacters = CharacterSet.urlQueryAllowed.subtracting(.init(charactersIn: "+&="))
let handledValue = paramValue.addingPercentEncoding(withAllowedCharacters: allowedCharacters)
// 2、把處理好的參數(shù)拼接到URL上
var components = URLComponents(string: srcUrl)
var queryItems = components?.queryItems ?? []
let tmpQuery = URLQueryItem(name: "encryptInfo", value: handledValue)
queryItems.append(tmpQuery)
components.queryItems = queryItems
// 最終的url
let finalUrl = components.url

注意,要先處理要拼接參數(shù)字符串,再用處理好的字符串去拼接url。而不是先拼接好url,再去處理url字符串。不然會打不開頁面

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容