gpt4 book ai didi

iphone - AFNetworking:编码包含 '%' 符号的 URL 字符串失败

转载 作者:可可西里 更新时间:2023-11-01 06:12:13 25 4
gpt4 key购买 nike

我正在使用 AFNetworking在我的 iOS 应用程序中。我发现请求参数包含百分号时会出现问题。然后编码失败。 AFURLEncodedStringFromStringWithEncoding 方法返回 nil。

我已经测试了这段代码,它打印了(null):

NSLog(@"%@", AFURLEncodedStringFromStringWithEncoding(@"%", NSUTF8StringEncoding));

预期的输出应该是:%25。其他字符编码没有问题。

方法定义如下:

NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) {
static NSString * const kAFLegalCharactersToBeEscaped = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\|~ ";

// Following the suggestion in documentation for `CFURLCreateStringByAddingPercentEscapes` to "pre-process" URL strings (using stringByReplacingPercentEscapesUsingEncoding) with unpredictable sequences that may already contain percent escapes.
return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)[string stringByReplacingPercentEscapesUsingEncoding:encoding], NULL, (CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)) autorelease];
}

知道这里出了什么问题吗?

编辑: The issue has been fixed in AFNetworking .

最佳答案

我不知道 API,但 URL 编码通常由

  • UTF-8 将字符串部分——路径、参数等——编码为字节
  • 应用字节值的百分比编码以获得纯 ASCII 字符串片段
  • 将 URL 片段与分隔符 :、/、? 等组合在一起。
  • 再次将该字符串编码为字节
  • 通过网络发送

参见 https://www.rfc-editor.org/rfc/rfc3986#section-2.5对于细微差别。请注意,RFC 声明如果 URL 引用 EBCDIC 系统上的文档,则 URL 应指定其名称的 EBCDIC 编码的字节值,而不是 EBCDIC 系统的人类用户知道它的字符串名称。所以 URL 最终是字节串而不是字符串。

至于如何让您的 API 正确表示该字节字符串,我不确定。

关于iphone - AFNetworking:编码包含 '%' 符号的 URL 字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com