Проверьте веб-адрес m3u8 с помощью С#

Я делаю небольшую функцию внутри программы и хочу проверить, работает ли ссылка m3u8. Однако я не могу сделать это правильно, потому что некоторые ссылки не работают, но возвращают код состояния, равный ОК. Вот мой код:

var textBox     = (TextBox)this.FindName("urlToCheck");
var request     = (HttpWebRequest)WebRequest.Create(textBox.Text.Trim());
request.Method  = "HEAD";

try
{
    var response = (HttpWebResponse)request.GetResponse();
    var success  = response.StatusCode == HttpStatusCode.OK;

    if (success) MessageBox.Show("Apparently the link is working");
    else MessageBox.Show("Apparently the link is not working");
}
catch (Exception)
{
    MessageBox.Show("Tthe link is not working");
}

Как я могу определить, есть ли реальный поток внутри рабочих ссылок? Я не уверен, как это сделать, как определить работающий поток URL и тот, который нет. Единственный способ сейчас для меня - использовать VLC Player.

Большое спасибо за вашу помощь.

С наилучшими пожеланиями


person cilindr0    schedule 14.09.2015    source источник
comment
Определить не работает. Запрос, который возвращает 200, работает по определению — он вернул все, что вы просили в теле. Если вы хотите убедиться, что тело соответствует вашим ожиданиям, вам следует проверить содержимое тела, а не код состояния.   -  person Panagiotis Kanavos    schedule 14.09.2015
comment
Хм, например, здесь у нас есть трансляция космической станции МКС: iphone-streaming.ustream.tv/uhls/9408562/streams/live/iphone/ Это работает, но вот это: iptvservice.ddns.net:8000/live/yannis/yannis/2322.m3u8 Нет. Я точно не знаю, как обнаружить разницу, для меня способ обнаружить ее - использовать проигрыватель VLC.   -  person cilindr0    schedule 14.09.2015


Ответы (1)


Наконец, я исправил это, проверив код состояния ссылки и длину содержимого:

var success = response.StatusCode == HttpStatusCode.OK && response.ContentLength > 0;

person cilindr0    schedule 16.11.2015