AFNetworking 302 重定向

前两天 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 重定向)