Мне нужен правильный синтаксис для метода setValue: forHTTPHeaderField: в NSMutableURLRequest

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

Это оскорбительный метод в NSMutableURLRequest - (void) setValue: (NSString *) value forHTTPHeaderField: (NSString *) field

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

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

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

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

Размер файла foobar 2048.

Привет, Дуг


person dugla    schedule 01.09.2009    source источник


Ответы (3)


Задача решена.

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

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"];
person dugla    schedule 01.09.2009

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

person donarb    schedule 04.08.2013

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

person Daniel    schedule 01.09.2009