Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Ios NSURLSession是否自动对URL的文本进行URL编码?_Ios_Nsurlsession - Fatal编程技术网

Ios NSURLSession是否自动对URL的文本进行URL编码?

Ios NSURLSession是否自动对URL的文本进行URL编码?,ios,nsurlsession,Ios,Nsurlsession,NSURLSession是否自动对URL的文本进行URL编码?或者你必须手动操作吗 否,您需要使用stringByAddingPercentEncodingWithAllowedCharacters:对URL的每个部分进行编码。请参见URLFragmentAllowedCharacterSet,URLHostAllowedCharacterSet等,以了解对URL的每一部分进行编码的正确字符 (请注意,所有这些都与NSURLSession无关,它已经需要NSURL。它不接受字符串,因此编码不是它

NSURLSession是否自动对URL的文本进行URL编码?或者你必须手动操作吗

否,您需要使用
stringByAddingPercentEncodingWithAllowedCharacters:
对URL的每个部分进行编码。请参见
URLFragmentAllowedCharacterSet
URLHostAllowedCharacterSet
等,以了解对URL的每一部分进行编码的正确字符

(请注意,所有这些都与
NSURLSession
无关,它已经需要
NSURL
。它不接受字符串,因此编码不是它的问题。正确的问题是
NSURL
是否自动转义作为字符串传递的字符。)


(也请务必阅读下面的评论。虽然
stringByAddingPercentEncodingWithAllowedCharacters:
将正确编码URL的每个部分,但根据RFC,您可能不完全了解“正确”的含义。特别是,如果查询包含
&
+
,则可能需要额外编码)

否,您需要使用
stringByAddingPercentEncodingWithAllowedCharacters:
对URL的每个部分进行编码。请参见
URLFragmentAllowedCharacterSet
URLHostAllowedCharacterSet
等,以了解对URL的每一部分进行编码的正确字符

(请注意,所有这些都与
NSURLSession
无关,它已经需要
NSURL
。它不接受字符串,因此编码不是它的问题。正确的问题是
NSURL
是否自动转义作为字符串传递的字符。)


(也请务必阅读下面的评论。虽然
stringByAddingPercentEncodingWithAllowedCharacters:
将正确编码URL的每个部分,但根据RFC,您可能不完全了解“正确”的含义。特别是,如果查询包含
&
+
,则可能需要额外编码)

同意。在某些情况下,甚至那些预定义的字符集有时也不够充分(例如,当百分比转义添加到
GET
查询中的值时,因为
&
+
都是所有
URLxxx
字符集所允许的)。对,因为
&
+
在URL中不是特殊字符。它们是x-www-form-urlencoded格式中的特殊字符,这是一个完全不同的东西,甚至只适用于某些方案。哦,关于URL的定义和人们认为它们必须如何工作的曲折章节。原则上,你真的应该从组件而不是通过解析字符串来建立URL(这样你可以避免大多数问题),但是很少有人这样做。大家都同意。当编码问题更多的是在查询中,而不是在URL的主机名或路径中时,人们建议“只使用
stringByAddingPercentEscapesUsingEncoding
”(或其他什么),我很沮丧。OP没有说明他/她真正想做什么,因此我们无法确定,tho.OS X 10.9和iOS 7引入了
NSURLComponents
来解析和构造URL。它可以自动处理编码内容。@vadian-是的,这样更好,但您仍然需要自己逃离查询部分
NSURLQueryItem
允许
+
在查询值中传递unscaped,但这是错误的。它必须在查询
应用程序/x-www-form-urlencoded
请求中转义。已同意。在某些情况下,甚至那些预定义的字符集有时也不够充分(例如,当百分比转义添加到
GET
查询中的值时,因为
&
+
都是所有
URLxxx
字符集所允许的)。对,因为
&
+
在URL中不是特殊字符。它们是x-www-form-urlencoded格式中的特殊字符,这是一个完全不同的东西,甚至只适用于某些方案。哦,关于URL的定义和人们认为它们必须如何工作的曲折章节。原则上,你真的应该从组件而不是通过解析字符串来建立URL(这样你可以避免大多数问题),但是很少有人这样做。大家都同意。当编码问题更多的是在查询中,而不是在URL的主机名或路径中时,人们建议“只使用
stringByAddingPercentEscapesUsingEncoding
”(或其他什么),我很沮丧。OP没有说明他/她真正想做什么,因此我们无法确定,tho.OS X 10.9和iOS 7引入了
NSURLComponents
来解析和构造URL。它可以自动处理编码内容。@vadian-是的,这样更好,但您仍然需要自己逃离查询部分
NSURLQueryItem
允许
+
在查询值中传递unscaped,但这是错误的。它必须在查询
应用程序/x-www-form-urlencoded
请求中转义。不,您必须自己转义。您应该向我们展示一个URL类型的示例(例如,它只是一个方案、主机和路径,还是在末尾以
&foo=bar
的形式包含参数),我们可以进一步帮助您。不,您必须自己转义它们。您应该向我们展示一个URL类型的示例(例如,它只是一个方案、主机和路径,还是在末尾以
&foo=bar
的形式包含参数),我们可以进一步帮助您。