我正在使用AFNetworking类与web-service进行交互。我遇到了一些问题。
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;
}];
在Breakpoint的帮助下,我检查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);
}
我的问题是当我在我的类中调用[operation setRedirectResponseBlock .....]时NSURLResponse * redirectResponse总是有空值但是当我在AFURLConnectionOperation.m类中检入 - (void)setRedirectResponseBlock .....时NSURLResponse * redirectResponse有一些价值。你能帮忙知道我哪里错了。最后一周所有的日子我用谷歌搜索我找不到任何与此相关的答案。
我正在使用“theRequest.cachePolicy = NSURLRequestUseProtocolCachePolicy”;因为我不想一直从服务器加载只有在标题中有任何修改然后我只想再次调用。为此,我需要使用“setRedirectResponseBlock”来编写下面的代码。
if ([response isKindOfClass:[NSHTTPURLResponse self]]) {
NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSString *modified = [headers objectForKey:@"Last-Modified"];
if (modified) { .......
请帮助我解决这个问题,非常感谢。
答案 0 :(得分:2)
根据相应委托方法的文档connection:willSendRequest:redirectResponse:
:
委托可以在发送请求之前修改请求,从而接收此消息,例如将请求的URL转换为其规范形式。要检测此情况,请检查redirectResponse;如果为零,则由于重定向而未发送消息。