WKWebview
の要求から応答HTTPヘッダーを読み取る必要があります。サーバーから送信された特定のカスタムヘッダーに基づいてカスタマイズを実行する必要があります。この情報を応答データに追加することはできません。WKWebviewからHTTP応答ヘッダーを取得します。
ドキュメントや以前の質問にエントリが見つかりませんでした。それを行う方法はありますか?
WKWebview
の要求から応答HTTPヘッダーを読み取る必要があります。サーバーから送信された特定のカスタムヘッダーに基づいてカスタマイズを実行する必要があります。この情報を応答データに追加することはできません。WKWebviewからHTTP応答ヘッダーを取得します。
ドキュメントや以前の質問にエントリが見つかりませんでした。それを行う方法はありますか?
あなたはWKNavigationDelegate
方法webView:decidePolicyFor:decisionHandler:
からの応答にアクセスできるように見えます。
WKWebView
さんnavigationDelegate
として、いくつかのオブジェクトを設定し、このメソッドを追加:力のキャストで
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)
}
を唱える力がなければ
:NobodyNadaの答えの
- (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バージョンを:
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
let headers = (navigationResponse.response as! HTTPURLResponse).allHeaderFields
//do something with headers
decisionHandler(.allow)
}