Ios 从WKWebview检索HTTP响应头
我需要从Ios 从WKWebview检索HTTP响应头,ios,objective-c,wkwebview,Ios,Objective C,Wkwebview,我需要从WKWebview的请求中读取响应HTTP头。我需要根据服务器发送的某些自定义头执行自定义。无法在响应数据中添加此信息 我在文档或之前的问题中找不到任何条目。有什么方法可以做到这一点吗?通过委托方法,您可以检索(WKNavigationResponse*)navigationResponse。从navigationResponse对象可以获得响应本身: - (void)webView:(WKWebView *)webView decidePolicyForNavigationRespon
WKWebview
的请求中读取响应HTTP头。我需要根据服务器发送的某些自定义头执行自定义。无法在响应数据中添加此信息
我在文档或之前的问题中找不到任何条目。有什么方法可以做到这一点吗?通过委托方法,您可以检索
(WKNavigationResponse*)navigationResponse
。从navigationResponse对象可以获得响应本身:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSHTTPURLResponse * response = (NSHTTPURLResponse *)navigationResponse.response;
}
看起来您可以通过
WKNavigationDelegate
方法访问响应
将某些对象设置为WKWebView
的navigationDelegate
,并添加此方法:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSDictionary *headers = ((NSHTTPURLResponse *)navigationResponse.response).allHeaderFields;
decisionHandler(WKNavigationResponsePolicyAllow);
}
NobodyNada答案的Swift 3.1、4和5版本: 无强制铸造
func webView(webView:WKWebView,decisionpolicyfornavigationresponse:WKNavigationResponse,decisionHandler:@escaping(WKNavigationResponsePolicy)->Void){
如果let response=navigationResponse.response as?HTTPURLResponse{
let headers=response.allHeaderFields
//对标题做些什么
}
决策处理程序(.allow)
}
强制铸造:
func webView(webView:WKWebView,decisionpolicyfornavigationresponse:WKNavigationResponse,decisionHandler:@escaping(WKNavigationResponsePolicy)->Void){
let headers=(navigationResponse.response为!HTTPURLResponse)。allHeaderFields
//对标题做些什么
决策处理程序(.allow)
}
Swift 4.2 Answers with response.
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
{
let response = navigationResponse.response as? HTTPURLResponse
decisionHandler(.allow)
}