AFNetworking:setRedirectResponseBlock在我的类NSURLResponse总是返回空值

我正在使用AFNetworking类与networking服务交互。我在这方面有一些问题。

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:theRequest];// using AFHTTPRequestOperation to request Data [operation setRedirectResponseBlock:^NSURLRequest *(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse) { NSLog(@"connection :%@",connection); NSLog(@"request :%@",request); NSLog(@"response :%@",redirectResponse); question 1:? i get NSURLResponse value is null. output:response :(null) return request; }]; 

在断点的帮助下,我检查AFNetworking类(类名:AFURLConnectionOperation.m)是否从服务器获得响应? 是的,它得到了回应。

 - (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block { self.redirectResponse = block; NSLog(@"connection :%@",_connection); NSLog(@"request :%@",_request); NSLog(@"response :%@",_redirectResponse);//getting NSURLResponse from server.(its showing response) output: response :<__NSGlobalBlock__: 0x46238> NSLog(@"block :%@",block); } 

我的问题是,当我调用[操作setRedirectResponseBlock …..]在我的类NSURLResponse * redirectResponse总是有空值,但当我检查 – (void)setRedirectResponseBlock …..在AFURLConnectionOperation.m类NSURLResponse * redirectResponse有一定的价值。 你能帮助知道我错在哪里。 最后一个星期,所有的日子我googling我找不到任何与此有关的答案。

我正在使用“theRequest.cachePolicy = NSURLRequestUseProtocolCachePolicy;” 因为我不想从服务器加载所有的时间,只有头部有任何修改,然后只有我想再次调用。 为此,我需要使用“setRedirectResponseBlock”写下面的代码。

 if ([response isKindOfClass:[NSHTTPURLResponse self]]) { NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields]; NSString *modified = [headers objectForKey:@"Last-Modified"]; if (modified) { ....... 

请帮我解决这个例子,非常感谢。

根据相应的委托方法的文档, connection:willSendRequest:redirectResponse: ::

委托可以在发送之前修改请求,从而接收此消息,例如将请求的URL转换为规范forms。 要检测这种情况,请检查redirectResponse; 如果是零,则由于redirect而不发送消息。