У меня есть метод загрузки для протокола HTTP. Но кажется, что он работает неправильно, что-то не так. Я тестировал его с некоторыми источниками URL, и это было правильно, за исключением последнего. Свойство ContentLength
неверно для URL-адреса. Он показан как 210 кб во время выполнения, но на самом деле это 8 МБ. Я покажу его, разделив мой код. Как это исправить?HttpWebResponse неверен для ContentLength
Код:
void TestMethod(string fileUrl)
{
HttpWebRequest req = WebRequest.Create(fileUrl) as HttpWebRequest;
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
long contentSize = resp.ContentLength;
MessageBox.Show(contentSize.ToString());
}
private void TestButton_Click(object sender, EventArgs e)
{
string url1 = "http://www.calprog.com/Sounds/NealMorseDowney_audiosample.mp3";
string url2 = "http://www.stephaniequinn.com/Music/Canon.mp3";
TestMethod(url1); //This file size must be 8 MB, but it shows up as 210 kb. This is the problem
TestMethod(url2); //This file size is correct here, about 2.1 MB
}
Он отлично работает. Мне не нравилось использовать 'StreamReader', потому что он ждет загрузки файла. Настройка «UserAgent» лучше и может вернуть правильный размер. И наконец, работает ли этот файл Mozilla 'UserAgent' для всех источников Http? Потому что мне нужно, чтобы это было обобщено. Спасибо @Quentin. –
Да, этот пользовательский агент будет работать со всеми http-источниками. (Если URL-адрес может быть доступен со стандартным браузером) –
Спасибо за быстрый ответ sir! Прекрасный ответ –