2012-08-16 5 views
3

웹 서버에서 데이터를 다운로드하는 iPhone 응용 프로그램에서 작업하고 있습니다. connection:willCacheResponse: 메서드가 호출되지 않는 것을 제외하고는 모든 것이 올바르게 작동합니다. 그러나 다른 사람은 connection:didReceiveResponse:, connection:didReceiveData:, connection:didFailWithError:, connectionDidFinishLoading:과 같이 모두 잘 작동합니다.연결 : willCacheResponse가 호출되지 않습니다.

- (void)makeConnection 
{ 
    NSURL *url = [NSURL URLWithString:@"http://www.abc.com"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]; 
    [request setHTTPMethod:@"POST"]; 
    NSString *postString = [NSString stringWithFormat:@"%@", string]; 
    [request setValue:[NSString stringWithFormat:@"%d", [postString length]] forHTTPHeaderField:@"Content-length"]; 
    [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse 
{ 
    NSCachedURLResponse *newCachedResponse = cachedResponse; 
    NSDictionary *newCachedResponseUserInfo = [NSDictionary dictionaryWithObject:[NSDate date] forKey:@"Cached Date"]; 
    newCachedResponse = [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response] data:[cachedResponse data] userInfo:newCachedResponseUserInfo storagePolicy:[cachedResponse storagePolicy]]; 

    return newCachedResponse; 
} 

가 나는 또한 NSURLRequestUseProtocolCachePolicy에 정책을 변경하려고하지만, 아무것도 도움 : 나는 다음과 같은 연결을했다. 또한 중단 점을 넣으려고 시도했지만 아무 일도 없었습니다.

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse 

내가 빠진 것이 있습니까? 미리 감사드립니다.

답변

6

연결 : willCacheResponse : 만 캐싱을 지원하는 프로토콜 메시지 : willCacheResponse : 응답이 캐시-Control 헤더가 포함되어있는 경우에만 Apple’s documentation:

대리인 연결을 수신에 따라 호출됩니다.

관련 문제