gpt4 book ai didi

ios - HTTPURLResponse allHeaderFields Swift 3 大写

转载 作者:技术小花猫 更新时间:2023-10-29 10:46:09 27 4
gpt4 key购买 nike

转换到 Swift 3 时,我注意到一个奇怪的错误发生在从 HTTPURLResponse 读取 header 字段时。

let id = httpResponse.allHeaderFields["eTag"] as? String

不再有效。

我打印了所有标题字典,我所有的标题键似乎都是句子大小写。

根据 Charles 代理,我所有的标题都是小写的。根据后端团队的说法,在他们的代码中, header 采用 Title-Case 格式。根据文档:标题应该不区分大小写。

所以我不知道该相信哪个。还有其他人在 Swift 3 中发现他们的 header 现在被 iOS 变成了 Sentence case 吗?如果是这样,这是我们想要的行为吗?

我应该用 Apple 记录错误,还是应该在 HTTPURLResponse 上创建一个类别,让我自己不区分大小写地找到 header 值。

最佳答案

更新:这是一个 known issue


allHeaderFields 应该返回一个不区分大小写的字典,因为这是 HTTP 规范所要求的。看起来像 Swift 错误,我会在 上提交雷达或错误报告。

下面是一些简单重现问题的示例代码:

let headerFields = ["ETag" : "12345678"]
let url = URL(string: "http://www.example.com")!
let response = HTTPURLResponse(url: url, statusCode: 200, httpVersion: "HTTP/1.1", headerFields: headerFields)!

response.allHeaderFields["eTaG"] // nil (incorrect)
headerFields["eTaG"] // nil (correct)

(改编自 this Gist from Cédric Luthi 。)

关于ios - HTTPURLResponse allHeaderFields Swift 3 大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40152483/

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