iOS WKWebView 网络请求设置 - Objective-C 示例
要设置 WKWebView 的网络请求,你可以使用 WKWebViewConfiguration 类的属性 defaultWebNavigationDelegate,将其设置为一个实现了 WKNavigationDelegate 协议的对象。然后,你可以在该对象中实现 webView:decidePolicyForNavigationAction:decisionHandler: 方法来拦截和修改请求。\n\n下面是一个示例代码,演示如何设置 WKWebView 的网络请求:\n\nobject-c\n// 创建 WKWebViewConfiguration 对象\nWKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];\n\n// 创建 WKWebViewNavigationDelegate 对象\nMyNavigationDelegate *navigationDelegate = [[MyNavigationDelegate alloc] init];\n\n// 设置 navigationDelegate 为 WKWebViewConfiguration 的 defaultWebNavigationDelegate 属性\nconfiguration.defaultWebNavigationDelegate = navigationDelegate;\n\n// 创建 WKWebView 对象\nWKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];\n\n// 加载网址\nNSURL *url = [NSURL URLWithString:@'https://www.example.com'];\nNSURLRequest *request = [NSURLRequest requestWithURL:url];\n[webView loadRequest:request];\n\n\n在 MyNavigationDelegate 类中,你可以实现 webView:decidePolicyForNavigationAction:decisionHandler: 方法来拦截和修改请求。下面是一个示例代码,演示如何拦截所有请求并修改其中的 URL:\n\nobject-c\n@interface MyNavigationDelegate : NSObject <WKNavigationDelegate>\n@end\n\n@implementation MyNavigationDelegate\n\n- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {\n // 获取请求的 URL\n NSURL *url = navigationAction.request.URL;\n\n // 修改 URL\n NSString *modifiedURLString = [url.absoluteString stringByAppendingString:@'?modified=true'];\n NSURL *modifiedURL = [NSURL URLWithString:modifiedURLString];\n\n // 创建修改后的请求\n NSURLRequest *modifiedRequest = [NSURLRequest requestWithURL:modifiedURL];\n\n // 使用修改后的请求加载网页\n [webView loadRequest:modifiedRequest];\n\n // 告诉 WKWebView 允许加载请求\n decisionHandler(WKNavigationActionPolicyAllow);\n}\n\n@end\n\n\n以上代码会将所有请求的 URL 后面添加 '?modified=true',然后使用修改后的 URL 加载网页。\n\n需要注意的是,上述代码只是一个示例,你可以根据自己的需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/p5Mi 著作权归作者所有。请勿转载和采集!