2017-02-17 73 views
0

私はいくつかのWebページを読み込むためのWKWebViewに取り組んでいます。言語の変更のためにWKWebViewの中にいくつかのヘッダーを渡す必要があります。私は正常に、しかし、サーバー側では、他の言語を示して正常に通過しました。合格の仕組みが正しいかどうか私に教えてください。WKWebviewはiOSのカスタムヘッダーを渡します

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; 
    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration]; 
    webView.navigationDelegate = self; 
    NSURL *nsurl=[NSURL URLWithString:@""]; 
    NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl]; 
    [webView loadRequest:nsrequest]; 
    [self.view addSubview:webView]; 
} 

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ 

    NSLog(@"%@",navigationAction.request.allHTTPHeaderFields); 

    NSMutableURLRequest *request = [navigationAction.request mutableCopy]; 
    [request setValue:@"sv" forHTTPHeaderField:@"Accept-Language"]; 

    decisionHandler(WKNavigationActionPolicyAllow); 
} 

答えて

0

あなたのコードに2つのミスがあります
1)あなたはヘッダフィールドを定義しますが、あなたはヘッダーを設定)
2(WebViewのは、すでにページをロードするための要求を使用するために開始された後)遅すぎます実際のリクエストの変更可能なコピー(使用されているものではない)にコピーします。メソッドが終了すると、このコピーはただちに解放されます。

はあなたのviewDidLoadここでこれを試してみてください:

// ... start as you did 
NSURL *nsurl=[NSURL URLWithString:@""]; // I assume you're using a correct URL in your actual code? 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:nsurl]; 
[request setValue:@"sv" forHTTPHeaderField:@"Accept-Language"]; 
[self.view addSubview:webView]; 
[webView loadRequest:nsrequest]; // I just prefer to add to the view hierarchy before I do anything with it, personal preference. 

あなたのwebView:decidePolicyForNavigationAction:decisionHandler:デリゲートメソッドでヘッダフィールドについて何もする必要はありません。

関連する問題