在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?

Posted

技术标签:

【中文标题】在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?【英文标题】:How to get response status code in UIWebView when web view added to view programmatically in iOS Swift 3? 【发布时间】:2017-08-04 15:07:25 【问题描述】:

我尝试在 UIWebView 中获取响应状态代码。 我试过这样:

func webViewDidFinishLoad(_ webView: UIWebView) 
    guard let request = webView.request else  return 
    let cachedUrlResponse = URLCache.shared.cachedResponse(for: request)
    let httpUrlResponse = cachedUrlResponse?.response as? HTTPURLResponse
    print("statusCode : \(String(describing:  httpUrlResponse?.statusCode))" )
  

当我在情节提要中设置 webView 并在控制器中设置 IBOutlet 时,这是正确的。但是需要以编程方式制作一个 webView 并做到了。 但我无法使用这些代码获得响应状态代码。 就拿零吧。 请帮我解决它。

【问题讨论】:

你能把代码贴在你创建webview的地方吗?可能是您没有正确设置委托,或者没有保留 webview,或者完全是其他原因。 【参考方案1】:

在全球范围内声明您的请求。您在 webView 中加载的请求,例如

let  globalRequest = URLRequest(url: URL.init(string: "https://www.facebook.com")!, cachePolicy: URLRequest.CachePolicy.returnCacheDataElseLoad, timeoutInterval: 15.0)

并检查该请求

let cachedUrlResponse = URLCache.shared.cachedResponse(for: globalRequest)

在 webViewDidFinishLoad 中。那会奏效。我猜这里的问题是 URLRequest 现在是 struct(value type) 而 webView.request 和 globalRequest 现在是两个不同的东西。您可以比较它们并进行验证。

【讨论】:

以上是关于在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 在 Swift 3 中以编程方式删除和激活新约束时布局损坏

如何在 Swift 3 中以编程方式在 UIImageview 中添加 UITableview

如何在 ios swift 中以编程方式创建自动布局等宽约束?

有没有办法在Swift中以编程方式设置NSCollectionView?

如何在ios swift中以编程方式创建自动布局等宽度约束?

在 Swift 中以编程方式将视图添加到 stackview