2009-09-01 3 views
0

Я тяну свои волосы, пытаясь вызвать правильный синтаксис для установки информации заголовка HTTP, выполняет байтовую нагрузку с HTTP-сервера.Мне нужен правильный синтаксис для setValue: forHTTPHeaderField: метод на NSMutableURLRequest

Это метод нарушителя на NSMutableURLRequest - (недействительный) SetValue: (NSString *) Значение forHTTPHeaderField: (NSString *) поля

Это, как я использую этот метод, чтобы загрузить первые 512 байт URL-адрес.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];  
[request setHTTPMethod:@"GET"]; 
[request setValue:@"0-512\r\n" forHTTPHeaderField:@"Range"]; 

До сих пор он игнорируется, и я всегда получаю всю полезную нагрузку данных. Мне просто нужен диапазон байтов (0 - 512). Может ли кто-нибудь избавиться от моей головной боли?

Update: Я использовал локон, чтобы подтвердить, что мой веб-сервер поддерживает байт диапазонов таким образом: локон --range 0-2047 http://www.somewhere.com/humungodata.dat -o "Foobar"

Размер файла Foobar 2048

Doug

ответ

1

Проблема решена.

Добавляя дополнительные поля заголовка, код немедленно работал правильно. Зачем? Не знаю. Но он работает:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"GET"]; 

[request setValue:@"keep-live"  forHTTPHeaderField:@"Connection"]; 
    [request setValue:@"300"  forHTTPHeaderField:@"Keep-Alive"]; 
[request setValue:@"bytes=0-2047" forHTTPHeaderField:@"Range"]; 
-1

У вас должен быть правильный способ добавить значение заголовка в URL-запрос, однако я думал, что только сообщения имеют значения заголовков, возможно, неправильно, вы пытались сделать это на других средах и заставил его работать? Может быть, вытащить?

0

Ваш исходный код был неправильным в строке setValue, он должен быть @ "bytes = 0-512". В вашем контроле вы использовали правильную строку, поэтому другие заголовки не нужны.

Смежные вопросы