2016-12-13 20 views
4

WKWebviewの要求から応答HTTPヘッダーを読み取る必要があります。サーバーから送信された特定のカスタムヘッダーに基づいてカスタマイズを実行する必要があります。この情報を応答データに追加することはできません。WKWebviewからHTTP応答ヘッダーを取得します。

ドキュメントや以前の質問にエントリが見つかりませんでした。それを行う方法はありますか?

答えて

10

あなたは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); 
} 
1

デリゲートメソッドから(WKNavigationResponse*)navigationResponseを取得できます。そしてnavigationResponseオブジェクトからあなたは、応答自体を取得することができます:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler { 

    NSHTTPURLResponse * response = (NSHTTPURLResponse *)navigationResponse.response; 

} 
1

スウィフト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) 
} 
関連する問題