美文网首页
iOS 加载UIWebView重定向

iOS 加载UIWebView重定向

作者: Leo_L | 来源:发表于2018-12-21 10:59 被阅读55次

请求方式

 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则表示拦截跳转。
}

相关文章

网友评论

      本文标题:iOS 加载UIWebView重定向

      本文链接:https://www.haomeiwen.com/subject/jxcmkqtx.html