私はAFNetworkingクラスを使用してWebサービスとやり取りしています。その点で問題があります。
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);
}
私の問題は、クラス NSURLResponse 内で [operation setRedirectResponseBlock.....] を呼び出すと *redirectResponse は常に null 値を持ちますが、チェックインすると - (void)setRedirectResponseBlock..... AFURLConnectionOperation.m クラス NSURLResponse *redirectResponse 内である程度の価値があります。どこが間違っているか教えてください。この 1 週間ずっと、私はグーグルで検索していましたが、これに関連する答えが見つかりませんでした。
私は「theRequest.cachePolicy = NSURLRequestUseProtocolCachePolicy;」を使用しています。ヘッダーに変更がある場合にのみ、サーバーから常にロードしたくないので、再度呼び出したいだけです。このために、「setRedirectResponseBlock」を使用して以下のコードを記述する必要があります。
if ([response isKindOfClass:[NSHTTPURLResponse self]]) {
NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSString *modified = [headers objectForKey:@"Last-Modified"];
if (modified) { .......
これを解決するのを手伝ってください。例は大歓迎です。