我尝试拦截请求并根据以下代码添加请求参数
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSURL * actionURL = navigationAction.request.URL;
if ([actionURL.host isEqualToString:kMyHost]) {
NSString * headerField = @"Authorization";
NSString * headerValue = [NSString stringWithFormat:@"Bearer %@", accessToken];
if ([[navigationAction.request valueForHTTPHeaderField:headerField] isEqualToString:headerValue]) {
decisionHandler(WKNavigationActionPolicyAllow);
} else {
NSMutableURLRequest * newRequest = [navigationAction.request mutableCopy];
[newRequest setValue:headerValue forHTTPHeaderField:headerField];
NSMutableString *params = [[NSMutableString alloc] initWithData:[newRequest HTTPBody] encoding:NSUTF8StringEncoding];
[params appendFormat:@"is_app_web_view=1&utm_source=ios"];
[newRequest setHTTPBody:[[self encodeToPercentEscapeString:params] dataUsingEncoding:NSUTF8StringEncoding]];
decisionHandler(WKNavigationActionPolicyCancel);
[webView loadRequest:newRequest];
}
} else {
decisionHandler(WKNavigationActionPolicyAllow);
}
}
我发现只设置http标头有效,但是一旦我添加了以下代码行,就不会发送请求:
NSMutableString *params = [[NSMutableString alloc] initWithData:[newRequest HTTPBody] encoding:NSUTF8StringEncoding];
[params appendFormat:@"is_app_web_view=1&utm_source=ios"];
[newRequest setHTTPBody:[[self encodeToPercentEscapeString:params] dataUsingEncoding:NSUTF8StringEncoding]];
这是添加参数的正确方法吗?有人能指出我正确的方向吗?