Не получается заголовок 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
заголовок и укажите полный диапазон загрузки, и вы должны быть в порядке.