美文网首页
AFNetworking 302 重定向

AFNetworking 302 重定向

作者: FlowYourHeart | 来源:发表于2018-06-20 11:31 被阅读277次

    前两天 app突然重复出现获取数据失败的提示(alert),造成了非常差的用户体验,通过网络抓包发现有一个请求状态为302,一番搜索,发现这是重定向(如果不知道就自行查一下),所有的AF请求都会在post get等请求前执行下面这个方法,所以只需重写这个方法就能拦截请求

    manager = [AFHTTPSessionManager manager];
    [manager setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest * _Nonnull(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLResponse * _Nonnull response, NSURLRequest * _Nonnull request) {
                NSHTTPURLResponse *resPonse = (NSHTTPURLResponse *)response;
               //1、如果要忽略重定向
              /*
                if (resPonse.statusCode == 302){
                    return nil;
                }else {//正常请求
                    return request;
                }
                 */
             // 2、通过重定向url去获取数据
                if (resPonse.statusCode == 302){//如果响应code==302 就是重定向
                    NSMutableURLRequest *res = [NSMutableURLRequest requestWithURL:request.URL];
                  //通过抓包发现请求头不见了 所以在这里添加请求头,如果没有这个需求的可以忽略
                    NSMutableDictionary *headers = [NSMutableDictionary dictionaryWithDictionary:request.allHTTPHeaderFields];
                    NSString *valueStr = [NSString stringWithFormat:@" %@",localToken];
                    [headers setObject:valueStr forKey:@"Authorization"];
                    res.allHTTPHeaderFields = headers;
    
                    return res;
                }else {//正常请求
                    return request;
                }
    }];
    

    个人笔记,勿喷 😄

    相关文章

      网友评论

          本文标题:AFNetworking 302 重定向

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