Here's my naive first pass code:
var httpUrlResponse: NSHTTPURLResponse? // = (...get from server...)
let contentType = httpUrlResponse?.allHeaderFields["Content-Type"]
I've tried various derivations of this code, but I keep getting compiler warnings/errors related to the basic impedance mismatch between the NSDictionary type of the allHeaderFields property and my desire to just get a String or optional String.
Just not sure how to coerce the types.
You can do something like the following in 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()
Obviously, here I'm going from the URLResponse
(the response
variable) to the HTTPURLResponse
, and getting the data from allHeaderFields
. If you already have the HTTPURLResponse
, then it's simpler, but hopefully this illustrates the idea.
For Swift 2, see previous revision of this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With