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 –