2014-11-20 2 views
1

url 요청으로 If Modified Since 헤더를 보내는 방법을 아는 사람이 있습니까?iOS : 요청시 변경된 헤더 보내기

RSS 페이지가 업데이트되었는지 여부를 알려주는 상태 코드를 다시 가져 오려고합니다.

업데이트 # 1 : 나는 다음을 수행 테스트를 할 수 있었다 :

나는 304 상태 코드를 얻을 내 전체 아이폰 OS 응용 프로그램을 삭제하고 실행하는 경우, 비록 이상한 무엇
NSURL *url = [NSURL URLWithString:self.url]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request addValue:@"Tue, 18 Nov 2014 20:46:46 GMT" forHTTPHeaderField:@"If-Modified-Since"]; 
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 

    int responseCode = (int)[httpResponse statusCode]; 
    NSLog(@"All headers: %@", [httpResponse allHeaderFields]); 
    NSLog(@"Status code:: %d", responseCode); 
}]; 

. 하지만 If-Modified-Since 값을 추가하고 다시 실행하는 줄을 주석으로 처리하면 - 200을 얻지 만 그 줄의 주석을 제거하고 다시 실행하면 - 304 오류가 발생하지 않습니다. 돌아와 ... 그것은 200 오류 코드입니다. 304 오류를 되 찾는 유일한 방법은 내 iPhone 장치에서 전체 응용 프로그램을 삭제하는 것입니다.

아이디어가 있습니까?

+0

확인 같은 대답 여기로 http://stackoverflow.com/questions/31551964/how-to-use-nsurlsession-to-determine-if-resource-has-changed/31567943#31567943 – mkumar

+0

동일한 게시물을 http://stackoverflow.com/questions/31551964/how-to-use-nsurlsession-to-determine-if-resource-has-changed/31567943#31567943 – mkumar

답변

7

조금 늦었지만 NSURLConnection이 304 코드를 얻기 위해 응답을 캐싱하기 때문에 이와 같이 요청을 만들어야합니다.

NSURLRequest *request = [NSURLRequest requestWithURL:url 
             cachePolicy:NSURLRequestReloadIgnoringCacheData 
            timeoutInterval:60.0];