0
這裏是我正在做的發送請求到服務器。允許URLRequest中的特殊字符httpBody
let urlStr = "someurl"
var request = URLRequest(url: URL(string: urlStr)!)
request.addValue(accessToken!, forHTTPHeaderField: "accessToken")
let postString = self.makeRequestString(dict: paramDict)
request.httpMethod = "POST"
request.httpBody = postString.data(using: .utf8, allowLossyConversion: true)
let session = URLSession.shared
request.timeoutInterval = 60
let task = session.dataTask(with: request) { data, response, error in
}
這裏是makeRequestString的方法描述
func makeRequestString(dict:Dictionary<String,AnyObject>) -> String {
let data = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
let str = String(data: data!, encoding: .utf8)
return "key=" + str!
}
我現在面臨的問題是,如果我的字典參數中有一些特殊的字符,如!@#$%^ & ()那麼服務器不接受請求並給出一些不希望的結果。
糾正代碼中的任何建議或指針,我失去了什麼。
編輯:
現在我得到所需的來自服務器的響應,如果我更改下面的代碼行中我的方法makeRequestString
let str = String(data: data!, encoding: .utf8)?.replacingOccurrences(of: "&", with: "%26")
也許試圖逃避那些人物 –
先刪除特殊字符在你的字符串比你的paramDict字符串併發送到服務器 –
檢查此https://stackoverflow.com/a/29502001/5177699 –