Не получается заголовок Range

Я пытаюсь возобновить загрузку с диска Google, у меня есть идентификатор файла, когда я закрываю соединение, которое я делаю этот сеанс после подключения к Интернету снова:

var request = (HttpWebRequest)WebRequest.Create(fileUri);
            request.Method = "PUT";
            request.ContentLength = 0;
            request.Headers.Add("Content-Range", "bytes */" + FileByteArray.Length);
            try
            {
                var response = request.GetResponse();
            }
            catch (WebException e)
            {
               fileRange = e.Response.Headers.Get("Range");
            }

        }

Я не получаю заголовок Range, почему это так?

1 ответ

Решение

Content-Range указывает, какой диапазон исходной сущности содержится в теле любого запроса (например, ваш PUT запрос) или 206 частичный ответ. Range устанавливается клиентом, а не сервером для запроса поддиапазона. Я предполагаю, что сервер, с которым вы разговариваете, не будет отвечать загруженным чанком, поэтому Content-Range (а также Range ни в коем случае) не будет присутствовать в качестве заголовка ответа.

В вашем фрагменте кода фактический диапазон загрузки отсутствует для Content-Range (см. обновленный HTTP RFC). Он должен иметь форму:

Content-Range: bytes 42-1233/1234

что означает: загрузить байт 42-1233 объекта, общий размер которого составляет 1234 байта.

Или когда полная длина неизвестна:

 Content-Range: bytes 42-1233/*

Так что снимите чек на Range заголовок и укажите полный диапазон загрузки, и вы должны быть в порядке.

Другие вопросы по тегам