2017-07-07 16 views
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") 
+0

これらの文字をエスケープしようとしている可能性があります –

+0

最初に特殊文字を削除あなたのparamDictを作成するよりもあなたの文字列に狂いがあり、サーバー –

+0

に送信するこれをチェックするhttps://stackoverflow.com/a/29502001/5177699 –

答えて

0

このエンコーディングを試してみてください:

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)! 
関連する問題