【问题标题】:Get HTTP Response header on UIWebView在 UIWebView 上获取 HTTP 响应标头
【发布时间】:2016-04-25 03:22:09
【问题描述】:

如何从 WebView 获取 HTTP 标头响应?我找到了半解决方案at Stackoverflow,但它是用 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. 也许现在我们有更好的方法来做到这一点?缓存并不总是启用。

【问题讨论】:

    标签: objective-c swift http uiwebview


    【解决方案1】:

    只需在 SWIFT 3.1 中使用它:

    if let request = webView.request {
                if let resp = URLCache.shared.cachedResponse(for: request) {
                    if let response = resp.response as? HTTPURLResponse {
                        print(response.allHeaderFields)
                    }
                }
            }
    

    【讨论】:

      【解决方案2】:

      斯威夫特

      Swift 更严格;你想保护自己免受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)
                  }
              }
          }
      }
      

      【讨论】:

      • cachedResponseForRequest 总是返回 nil,解决方法?还是我缺少实现某些东西?
      • 同上。 cachedResponseForRequest 返回零。苹果论坛提到了一个错误。解决方法?
      • 有人找到解决方案了吗?
      • 相同结果,if let resp = URLCache.shared.cachedResponse(for: request) { 为零
      猜你喜欢
      • 2014-04-15
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2016-09-21
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多