2011-11-03 5 views
1

이것은 iOS 용입니다.NSMutableURLRequest의 addValue가 작동하지 않습니까?

이전에 중단 된 연결에서 파일 다운로드를 재개하려고합니다. 이렇게하려면 단순히 같은 다운로드 요청의 시작 지점을 설정하기 위해 HTTP 헤더의 범위 필드를 사용 :

NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: url]]; 


// Find out if file already exists. 
if([[NSFileManager defaultManager] fileExistsAtPath:filename]) 
{ 
    NSError *error; 
    unsigned long long currentSize =[[[NSFileManager defaultManager] attributesOfItemAtPath:filename error:&error] fileSize]; 

    NSLog(@"File exists, size:%llu",currentSize); 

    // If the file was not completly downloaded -> resume download 
    [urlRequest addValue:[NSString stringWithFormat:@"bytes=%llu-",currentSize] forHTTPHeaderField:@"Range"]; 

    //[urlRequest setValue:[NSString stringWithFormat:@"%llu-",currentSize] forHTTPHeaderField:@"range"]; 


} 

을 위의 SRC에서 볼 수 있듯이, 나 또한 setValue의를 사용했습니다. 두 경우 모두 "Range"필드가 추가되었지만 작동하지 않는 것 같습니다. 파일은 항상 바이트 오프셋 0에서 전송됩니다. NSLog (@ "% @", [urlRequest allHTTPHeaderFields])를 수행하면 범위 값이 설정되지만 여전히 작동하지 않는 것처럼 보입니다.

Doing NSLog (@ "% @", [urlRequest allHTTPHeaderFields])는 다음을 표시합니다. {Range = "bytes = 13207107-"; } 또는 주석 처리 된 setValue 코드의 경우 : {Range = "13207107-";}.

나는

사람이 위의 코드에서 문제를 볼 수 있습니까 ... 어쩌면 HTTP 서버가 범위하지만 IT 사람이, 실행하는 저를 안심 지원하지 않습니다 생각? 웹 서버가 범위 필드를 지원하는지 쉽게 테스트 할 수 있습니까?

감사합니다.

답변

1

귀하의 앱과 별도로 서버를 테스트하고 싶습니다. 요청의 형식이 올바른 것처럼 보입니다. 말할 수있는 가장 쉬운 방법은 OSX와 함께 제공되는 curl 사용하는 것입니다 : 당신이 응답 헤더와 (이 경우 401) 적절한 Content-Length 헤더에 Content-Range이 표시되지 않는 경우, 당신은 알 수

curl -sv -H 'Range: bytes=100-500' http://www.google.com/intl/en_com/images/srpr/logo3w.png > /dev/null 

을 서버에 문제가 있습니다.