Это для iOS:
Я пытаюсь возобновить загрузку файла с ранее прерванного соединения.Чтобы сделать это, я просто использую поле диапазона 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"];
}
Как вы можете видеть в вышеприведенном сценарии, я также попытался использовать setValue.В обоих случаях кажется, что поле «Диапазон» добавлено, но не работает.Файл всегда отправляется со смещением байта 0. Когда я делаю NSLog (@ "% @", [urlRequest allHTTPHeaderFields]), я получаю значение диапазона, которое устанавливается, но оно все равно не работает:
При выполнении NSLog (@ "% @", [urlRequest allHTTPHeaderFields]) отображаются: {Range = "bytes = 13207107-";} или, в случае закомментированного кода setValue: {Range = "13207107 -";}.
Я подумал, что, возможно, HTTP-сервер не поддерживает диапазон, но ИТ-специалист заверил меня, что это ...
Кто-нибудь видит какие-либо проблемы в коде выше?Есть ли простой способ проверить, поддерживает ли веб-сервер поле диапазона?
Спасибо!