我需要从WKWebview
的请求中读取响应HTTP标头。我需要根据服务器发送的某些自定义标题执行自定义。无法在响应数据中添加此信息。从WKWebview中检索HTTP响应标头
我无法在文档中找到任何条目,也无法在此处找到以前的问题。有没有办法做到这一点?
我需要从WKWebview
的请求中读取响应HTTP标头。我需要根据服务器发送的某些自定义标题执行自定义。无法在响应数据中添加此信息。从WKWebview中检索HTTP响应标头
我无法在文档中找到任何条目,也无法在此处找到以前的问题。有没有办法做到这一点?
看起来你可以访问从WKNavigationDelegate
方法webView:decidePolicyFor:decisionHandler:
响应。
设置一些对象为WKWebView
的navigationDelegate
,并添加以下方法:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSDictionary *headers = ((NSHTTPURLResponse *)navigationResponse.response).allHeaderFields;
decisionHandler(WKNavigationResponsePolicyAllow);
}
从代表方法,您可以检索(WKNavigationResponse*)navigationResponse
。而从navigationResponse对象,你可以得到响应本身:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSHTTPURLResponse * response = (NSHTTPURLResponse *)navigationResponse.response;
}
雨燕3.1的版本NobodyNada的回答:
没有力量投
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if let response = navigationResponse.response as? HTTPURLResponse {
let headers = response.allHeaderFields
//do something with headers
}
decisionHandler(.allow)
}
用力投:
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
let headers = (navigationResponse.response as! HTTPURLResponse).allHeaderFields
//do something with headers
decisionHandler(.allow)
}