我正在尝试为“mms://wms.iskon.hr/Novi20%25radio20%25Djakovo”获取WebReguest,但我得到NotSupportedException:“URI前缀无法识别”。 我使用的代码非常简单:
Uri uri = new Uri(watchedStream.URL.Trim());
WebRequest wr = WebRequest.Create(uri);
Mms方案是这个问题的根源,但我无法弄清楚工作解决方案。
更新: 经过一番酿造后,我终于得到了回应,但我无法获得WebResponse()。现在我的代码生成“502 Bad gateway exception”。 这个新代码:
Uri uri = new Uri(watchedStream.URL.Trim());
WebRequest wr = WebRequest.Create("http://" + Dns.GetHostAddresses(uri.DnsSafeHost)[0].ToString() + ":1755");
WebResponse = wr.GetResponse();
答案 0 :(得分:2)
从查看MSDN page on WebRequest,特别是'继承',看起来这是因为WebRequest只支持文件,http和ftp方案。
编辑:我刚刚玩了一些WebClient来查看是否可以哄骗下载一些数据,但是它使用了WebRequest,所以你得到了同样的例外:-(但是,WebClient MSDN页面上有评论那说明
默认情况下,.NET Framework 支持以http:开头的URI, https:,ftp:和文件:scheme 标识符
我们已经知道了。然而,在那里有一个评论说明
WebClient实例可以访问数据 与任何WebRequest后代 在。注册 WebRequest.RegisterPrefix方法。
这表明您应该能够创建一个实现IWebRequestCreate的类,然后您可以注册该类以支持mms方案,然后您就可以获取数据。 WebRequest.RegisterPrefix
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用WPF MediaElement
进行检查。
试试这段代码。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
try
{
MediaElement me = new MediaElement();
me.MediaEnded += me_MediaEnded;
me.MediaFailed += me_MediaFailed;
me.MediaOpened += me_MediaOpened;
me.Source = new Uri("mms://95.0.159.131/TRTBELGESEL");
mainGrid.Children.Add(me);
}
catch (Exception ex)
{
}
}
void me_MediaOpened(object sender, RoutedEventArgs e)
{
Debug.WriteLine("OPENED"); // It means OK!
}
void me_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
Debug.WriteLine("FAILED"); // It means that URL is not working
}
void me_MediaEnded(object sender, RoutedEventArgs e)
{
Debug.WriteLine("ENDED");
}
}