NSMutableURLRequest forHTTPHeaderField键未正确设置
问题描述:
在我的应用程序中,在进行API调用时,我需要在标头中传递位置。但关键是转换为CamelCase。请找我的代码如下NSMutableURLRequest forHTTPHeaderField键未正确设置
let session = URLSession.shared
let request = NSMutableURLRequest(url: url!)
request.httpMethod = "GET"
request.addValue("XYZLocation", forHTTPHeaderField: "location")
let task = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error == nil){
let str = String(data: data!, encoding: String.Encoding.utf8)
print("Response : \(String(describing: str))")
}
else{
print("Error : \(String(describing: error?.localizedDescription))")
}
})
print("Header : \(String(describing: request.allHTTPHeaderFields))")
task.resume()
日志输出低于
Header : Optional(["Location": "XYZLocation"])
我怎样才能保持头键区分大小写。请帮帮我。
答
可能有一些方法来解决,但按照以下Apple的文档链接:
https://developer.apple.com/documentation/foundation/nsmutableurlrequest/1407676-addvalue
HTTP报头字段名不区分大小写。
我没有足够的声望评论这就是为什么我添加它作为答案。
首先,使用本地Swift等价物,'URLRequest'而不是'NSMutableURLRequest'。其次,如果您查看'addValue'的[documentation](https://developer.apple.com/documentation/foundation/nsmutableurlrequest/1407676-addvalue),您可以看到标题值对符合大小写不敏感到HTTP RFC,所以你也应该在后端使用不区分大小写的标题。 –
@DávidPásztor与'URLRequest'也是一样的。我们也无法对后端进行更改。为什么只有'Location'标题。它适用于其他标题键。 –