我需要從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)
}