Мне нужен правильный синтаксис для setValue: forHTTPHeaderField: метод на NSMutableURLRequest - PullRequest
0 голосов
/ 01 сентября 2009

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

Это неправильный метод в NSMutableURLRequest - (void) setValue: (NSString *) значение для HTTPHeaderField: (NSString *) поле

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

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

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

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

Размер файла foobar равен 2048

Cheers, Дуг

Ответы [ 3 ]

1 голос
/ 01 сентября 2009

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

При добавлении дополнительных полей заголовка код сразу работал правильно. Зачем? Не знаю. Но это работает:

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"];
0 голосов
/ 04 августа 2013

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

0 голосов
/ 01 сентября 2009

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

...