2017-07-07 235 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)! 
相关问题