Я пытаюсь получить длину содержимого удаленного файла, чтобы ограничить размер загрузки удаленных изображений следующим образом:
WebResponse response = this.GetWebRequest().GetResponse();
long contentLength = response.ContentLength;
// WebResponse.ContentLength doesn't always know the value,
// it returns -1 in this case.
if (contentLength == -1)
{
// Response headers may still have the Content-Length inside of it.
string headerContentLength = response.Headers["Content-Length"];
if (!String.IsNullOrWhiteSpace(headerContentLength))
{
contentLength = long.Parse(headerContentLength,
CultureInfo.InvariantCulture);
}
}
Моя проблема в том, что, поскольку заголовок длины содержимого является необязательным, иногда это значение невозможно определить.
Я прочитал аналогичные вопросы здесь и здесь это, кажется, указывает на то, что я мог бы каким-то образом использовать свойство Transfer-Encoding=chunked для определения длины, но я не нашел примера того, как это сделать.
Это возможно? Может ли кто-нибудь предоставить мне пример кода?
Content-Length: 33566
в ответ на этого конкретного URL: hurl.it/hurls/c79a3f4611819c370e53a30d07958ee1892862b9/ - person Piskvor left the building   schedule 12.01.2012Content-Length
в Firebug, но я вижу, как он передается по сети, когда я перехватываю необработанный сетевой трафик с помощью Wireshark! Так что это может быть ошибка отображения Firebug; возможно, попробуйте посмотреть трафик в Fiddler2, это отличный прокси-сервер для отладки HTTP (для Windows). Надстройки Firefox, возможно, не получают полные заголовки (?); поскольку Fiddler является прокси-сервером, он точно показывает, что передается по сети. - person Piskvor left the building   schedule 12.01.2012