WebRequest结果显示“URI前缀无法识别”。

时间:2011-03-03 15:28:20

标签: c# .net

我正在尝试为“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();

3 个答案:

答案 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)

问题在于MMS协议并不意味着(或支持)用作URI。您似乎应该将其用作“翻转网址”。

见以下内容:

MMS Wikipedia

Eggheadcafe posting

答案 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");
   }
    }