Ios NSURLSession是否自动对URL的文本进行URL编码?
NSURLSession是否自动对URL的文本进行URL编码?或者你必须手动操作吗 否,您需要使用Ios NSURLSession是否自动对URL的文本进行URL编码?,ios,nsurlsession,Ios,Nsurlsession,NSURLSession是否自动对URL的文本进行URL编码?或者你必须手动操作吗 否,您需要使用stringByAddingPercentEncodingWithAllowedCharacters:对URL的每个部分进行编码。请参见URLFragmentAllowedCharacterSet,URLHostAllowedCharacterSet等,以了解对URL的每一部分进行编码的正确字符 (请注意,所有这些都与NSURLSession无关,它已经需要NSURL。它不接受字符串,因此编码不是它
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
的形式包含参数),我们可以进一步帮助您。