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 –