2017-07-07 123 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)! 
相關問題