Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从WKWebview检索HTTP响应头_Ios_Objective C_Wkwebview - Fatal编程技术网

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)
}