我正在使用swift将包含URL(url编码)的字符串发布到服务器,并将URL格式化为以下内容。
url = "http://something.com/?blah=blah&stuff=stuff"
url = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
然而一切都在&在网址被切断。所以我就像以下一样攻击它。
url = url!.stringByReplacingOccurrencesOfString("&", withString:"FLAGABC123");
必须有更好的方法来做到这一点,并且赞赏任何建议。
请求使用以下方式发布:
var request = NSMutableURLRequest(URL: nsurl!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
request.HTTPMethod = "POST"
let params = "path=(path)"
let http_body = params.dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = http_body
let session = auth.sessionWithAuth(email, password: "")
let task = session.dataTaskWithRequest(request, completionHandler:{(dataObject, response, error) in
答案 0 :(得分:0)
首先,percentEscapes用于url编码。在号码中允许使用&符号。您正在尝试使用&传递字符串作为后期数据中的值。但是,在服务器端,&被解析为另一个键,值正在开始。
您想要的是HTML编码,而不是网址编码。 Swift没有内置函数来执行此操作,但我想您可以创建自己的函数。对于&符号,您只需要用&
替换它url = url!.stringByReplacingOccurrencesOfString("&", withString:"&");