Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将包含URL的字符串发布到服务器后会截断所有内容&_Url_Swift_Encoding - Fatal编程技术网

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

将包含URL的字符串发布到服务器后会截断所有内容&,url,swift,encoding,Url,Swift,Encoding,我正在发布一个字符串,其中包含一个使用swift编码到服务器的URL,并且正在格式化URL,如下所示 url = "http://something.com/?blah=blah&stuff=stuff" url = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) url = url!.stringByReplacingOccurrencesOfString("&", withString:

我正在发布一个字符串,其中包含一个使用swift编码到服务器的URL,并且正在格式化URL,如下所示

url = "http://something.com/?blah=blah&stuff=stuff"
url = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
url = url!.stringByReplacingOccurrencesOfString("&", withString:"FLAGABC123");
然而,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

首先,百分比转义用于url编码。url中允许使用符号AND。您正试图在post数据中以值形式传递带有&的字符串。但是,在服务器端,&被解析为表示另一个键和值正在启动

您需要的是HTML编码,而不是url编码。Swift没有内置函数来完成这项工作,但我想您可以创建自己的函数。在使用符号的情况下,只需将其替换为&

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

它什么时候被切断。包含的两行将生成一个与原始字符串相同的字符串,因为所有字符都不需要百分比转义。你是怎么发布的?这是我发布的要点: