繁体   English   中英

使用URLSessionDownloadDelegate获取HTTP标头

[英]Getting HTTP headers with URLSessionDownloadDelegate

我怎么会去从服务器获取的标题来检查它的状态代码是200404 ,等等?

我有一个代表班:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM