0

私は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) { .......

これを解決するのを手伝ってください。例は大歓迎です。

4

1 に答える 1