在 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?