一尘不染

在UIWebView上获取HTTP响应标头

swift

如何从WebView获得HTTP标头响应?我找到了半解决方案,但是它是用Objective-
C编写的,不能将其转换为Swift(我已经尝试过使用较差的Obj-C知识了)。

Objective-C代码:

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];
        NSLog(@"%@",[(NSHTTPURLResponse*)resp.response allHeaderFields]);
    }
  1. 该代码将如何看待Swift?
  2. 也许现在我们有更好的方法呢?并不总是启用缓存。

阅读 205

收藏
2020-07-07

共1个答案

一尘不染

迅速

斯威夫特更严格; 您想保护自己免受nil指针和optionals

  • 检查webView实际是否有request
  • 检查request实际是否有NSCachedURLResponse
  • 对响应进行类型检查 NSHTTPURLResponse
    func webViewDidFinishLoad(webView: UIWebView) {
        if let request = webView.request {
            if let resp = NSURLCache.sharedURLCache().cachedResponseForRequest(request) {
                if let response = resp.response as? NSHTTPURLResponse {
                    print(response.allHeaderFields)
                }
            }
        }
    }
2020-07-07