zoukankan      html  css  js  c++  java
  • WKWebView与UIWebView 的重定向区别

    1.在WKWebView重定向处理:

    在decidePolicyForNavigationAction 代理方法中添加

       NSURL *url = [NSURL URLWithString:string];
        NSMutableURLRequest *quest = [NSMutableURLRequest requestWithURL:url];
        quest.HTTPMethod = @"GET";
        NSURLConnection *connect = [NSURLConnection connectionWithRequest:quest delegate:self];
        [connect start];

    并在NSURLConnectionDataDelegate的代理方法

    - (nullable NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(nullable NSURLResponse *)response
    {
        NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
        
        NSLog(@"statusCode: %ld", urlResponse.statusCode);
        
        NSDictionary *headers = urlResponse.allHeaderFields;
        NSLog(@"%@", headers);
        NSLog(@"redirect   url: %@", headers[@"Location"]);    // 重定向的地址
        NSLog(@"newRequest url: %@", [request URL]);           // 重定向的地址或原地址
        NSLog(@"redirect response url: %@", [urlResponse URL]);// 触发重定向请求的地址,
        if ([request URL] != nil && headers[@"Location"] != nil)
        {
            NSLog(@"重定向处理");
            [self.wkWebView loadRequest:[NSURLRequest requestWithURL:[request URL]]];
            self.shareUrl = [request URL].absoluteString;
        }
        else
        {
            NSLog(@"无重定向处理");
        }
        return request;
    }

    2.UIWebView 重定向处理

    在 shouldStartLoadWithRequest中加入

     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
                if (connectionError || ([response respondsToSelector:@selector(statusCode)] && [((NSHTTPURLResponse *)response) statusCode] != 200 && [((NSHTTPURLResponse *)response) statusCode] != 302)) {
                    
                        NSLog(@"xy-statusCode = %zd", [(NSHTTPURLResponse *)response statusCode]);
        
                }else {// 重定向的URL
                    NSString *url =response.URL.absoluteString;
    //                [webView loadRequest:[NSURLRequest requestWithURL:kURLString(response.URL.absoluteString)]];
                    NSLog(@"xy-重定向statusCode = %zd", [(NSHTTPURLResponse *)response statusCode]);
                    self.shareUrl =url;
                }
                NSLog(@"xy---------------------------------------------------------");
            }];

  • 相关阅读:
    [Kali_Debian] 清除无用的库文件(清理系统,洁癖专用)-布布扣-bubuko.com
    给 Linux 系统“减肥”,系统垃圾清理_系统安装与配置管理_Linux Today
    命令行选项
    SQL 优化
    精通initramfs构建step by step
    常用正则表达式
    Chrome_浏览器开发人员工具
    按键精灵
    CMD命令大全
    50种折纸方法
  • 原文地址:https://www.cnblogs.com/pp-pping/p/11412985.html
Copyright © 2011-2022 走看看