将包含 URL 的字符串发布到服务器会截断 & 之后的所有内容
Posting string containing URL to server truncates everything after &
我正在使用 swift 将包含 URL(url 编码)的字符串发布到服务器,并将 url 格式化如下。
url = "http://something.com/?blah=blah&stuff=stuff"
url = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
但是 url 中 & 之后的所有内容都被切断了。所以我像下面这样破解它。
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
首先,percentEscapes 用于 url 编码。 url 中允许使用 & 符号。您正在尝试传递一个带有 & 作为 post 数据中的值的字符串。但是,在服务器端,& 被解析为表示另一个键和值正在开始。
那么你想要的是HTML编码,而不是url编码。 Swift 没有执行此操作的内置函数,但我想您可以创建自己的函数。对于&符号,您只需将其替换为 &
url = url!.stringByReplacingOccurrencesOfString("&", withString:"&");
我正在使用 swift 将包含 URL(url 编码)的字符串发布到服务器,并将 url 格式化如下。
url = "http://something.com/?blah=blah&stuff=stuff"
url = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
但是 url 中 & 之后的所有内容都被切断了。所以我像下面这样破解它。
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
首先,percentEscapes 用于 url 编码。 url 中允许使用 & 符号。您正在尝试传递一个带有 & 作为 post 数据中的值的字符串。但是,在服务器端,& 被解析为表示另一个键和值正在开始。
那么你想要的是HTML编码,而不是url编码。 Swift 没有执行此操作的内置函数,但我想您可以创建自己的函数。对于&符号,您只需将其替换为 &
url = url!.stringByReplacingOccurrencesOfString("&", withString:"&");