将包含URL的字符串发布到服务器会截断&之后的所有内容。

时间:2015-02-12 15:55:50

标签: url swift encoding

我正在使用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

1 个答案:

答案 0 :(得分:0)

首先,percentEscapes用于url编码。在号码中允许使用&符号。您正在尝试使用&传递字符串作为后期数据中的值。但是,在服务器端,&被解析为另一个键,值正在开始。

您想要的是HTML编码,而不是网址编码。 Swift没有内置函数来执行此操作,但我想您可以创建自己的函数。对于&符号,您只需要用&

替换它
url = url!.stringByReplacingOccurrencesOfString("&", withString:"&");