这是我幼稚的首次通过代码:

var httpUrlResponse: NSHTTPURLResponse? // = (...get from server...)
let contentType = httpUrlResponse?.allHeaderFields["Content-Type"]

我已经尝试过此代码的各种派生形式,但始终收到与allHeaderFields属性的NSDictionary类型与我只想获取String或可选String的基本阻抗不匹配有关的编译器警告/错误。

只是不确定如何强制类型。

最佳答案

您可以在Swift 3中执行以下操作:

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    if let httpResponse = response as? HTTPURLResponse, let contentType = httpResponse.allHeaderFields["Content-Type"] as? String {
        // use contentType here
    }
}
task.resume()

显然,这里是从URLResponse(response变量)到HTTPURLResponse,然后从allHeaderFields获取数据。如果您已经有了HTTPURLResponse,那么它会更简单,但是希望这可以说明这个想法。

对于Swift 2,请参阅previous revision of this answer

关于ios - 如何访问NSHTTPURLResponse的 “Content-Type” header ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25611908/

10-12 05:55