[英]Getting HTTP headers with URLSessionDownloadDelegate
我怎么会去从服务器获取的标题来检查它的状态代码是200
, 404
,等等?
我有一个代表班:
class DownloadDelegate : NSObject, URLSessionDelegate, URLSessionDownloadDelegate, URLSessionTaskDelegate {
// Implementations of delegate methods:
[...]didFinishDownloadingTo location: URL[...]
[...]didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64[...]
}
但是我不确定在哪里可以提取标题。
urlSession(_:downloadTask:didFinishDownloadingTo:)
为您提供标题。
参数downloadTask
具有.response
类型的属性URLResponse
。
假设您使用的是HTTP / HTTPS,则可以将其HTTPURLResponse
转换为HTTPURLResponse
。
每当您发出HTTP请求时,您返回的NSURLResponse对象实际上就是HTTPURLResponse类的实例。
( 来源:URLResponse的API参考 )
HTTPURLResponse
具有用于获取状态代码( statusCode
)和所有标头字段为[AnyHashable: Any]
( allHeaderFields
)的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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.