iOS 加载UIWebView重定向

请求方式

 NSURL *url = [NSURL URLWithString:urlstring];
    NSMutableURLRequest *quest = [NSMutableURLRequest requestWithURL:url];
    
        [quest setValue:GZYPTOpenId forHTTPHeaderField:@"openId"];
        [quest setValue:GZYPTSecret forHTTPHeaderField:@"secret"];
        //请求头里添加token、userId
        [quest setValue:[Util getInfoObjectForKey:@"token"] forHTTPHeaderField:@"token"];
        [quest setValue:[Util getInfoObjectForKey:@"userId"] forHTTPHeaderField:@"userId"];
    
    quest.HTTPMethod = @"GET";//设置get请求
    
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfig.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:[NSOperationQueue currentQueue]];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:quest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        MYLog(@"************%@************",response);
        
        NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
        NSLog(@"location22222 code: %ld",res.statusCode);
        NSLog(@"location22222: %@",res.allHeaderFields[@"Location"]);
        
        
    }];
    
    [task resume];

NSURLSessionDelegate

//重定向的代理方法
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
willPerformHTTPRedirection:(NSHTTPURLResponse *)response
        newRequest:(NSURLRequest *)request
 completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler{
       //cancel last download task
    NSLog(@"location code: %ld",response.statusCode);
    NSLog(@"请求返回的要加载的URL在这里面: %@",response.allHeaderFields);

    NSDictionary *dic = response.allHeaderFields;
//加载重定向的URL
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL   URLWithString:dic[@"Location"]]];
    [self.webView loadRequest:request];
    
    NSLog(@"location: %@",response);
    completionHandler(request);//这个如果为nil则表示拦截跳转。
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容