如何从服务器获取标头,检查状态代码是200
,404
等?
我有一个委托类:
class DownloadDelegate : NSObject, URLSessionDelegate, URLSessionDownloadDelegate, URLSessionTaskDelegate {
// Implementations of delegate methods:
[...]didFinishDownloadingTo location: URL[...]
[...]didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64[...]
}
但我不确定在哪里可以提取标题。
答案 0 :(得分:5)
urlSession(_:downloadTask:didFinishDownloadingTo:)
为您提供标题。
参数downloadTask
的属性.response
类型为URLResponse
。
假设您使用的是HTTP / HTTPS,可以将其投放到HTTPURLResponse
。
每当您发出HTTP请求时,您获得的NSURLResponse对象实际上是HTTPURLResponse类的实例。
(来源:URLResponse的API参考)
HTTPURLResponse
具有获取状态代码(statusCode
)和所有标题字段为[AnyHashable: Any]
(allHeaderFields
)的属性。
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
guard let response = downloadTask.response as? HTTPURLResponse else {
return //something went wrong
}
let status = response.statusCode
let completeHeader = response.allHeaderFields
}