我正在为Windows Phone 7.1应用编码,当用户点击特定按钮时,将使用MediaPlayerLauncher播放YouTube视频。
问题是,MediaPlayerLauncher只能通过提供视频的网址来播放视频;视频的链接本身位于页面的html中。现在,我设法通过使用WebClient()来下载html并从中提取视频的链接,通过将此事件附加到'client',我的WebClient:
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
pageHtml = e.Result;
stringBuilder = new StringBuilder(pageHtml);
if (pageHtml != null)
{
if (pageHtml.Contains("<html"))
{
if (pageHtml.Contains("<script"))
{
stringBuilder.Replace("</script>", string.Format("{0}{1}</script>", NOTIFY_SCRIPT, Environment.NewLine));
}
else if (pageHtml.Contains("<head"))
{
stringBuilder.Replace("</head>", string.Format("{0}{1}</head>", NOTIFY_SCRIPT, Environment.NewLine));
}
else
{
stringBuilder.Replace("</html>", string.Format("{0}{1}</html>", NOTIFY_SCRIPT, Environment.NewLine));
}
}
else
{
//Just skip it or display an error message or whatever
}
rssBrowser.NavigateToString(stringBuilder.ToString());
}
}
基本上,我添加了一个'NOTIFY_SCRIPT'脚本来检测youtube视频的存在(如果你想了解更多关于这个的详细信息,那么视频的链接基本上就是一个标签,所以我只需要获取所有标签,找到一个有链接,并获取它的内容(链接))。
但是,这仍然不起作用。我尝试建立一个WebBrowser,并在每次WebBrowser导航时导航并触发事件,以确保它导航到正确的页面。但有时,它没有正确导航;它会卡在中间页面上或转到原始的YouTube页面。所以,我决定看看传入的HTML。由于某种原因,传入的html缺少youtube的脚本。我使用浏览器检查了youtube页面上的脚本(我访问了移动网页并“检查了元素”),并且它有一个脚本,但是当WebClient获取html时脚本丢失了。
所以也许这就是问题所在?有谁知道如何解决这个问题,或者你可能已经以不同的方式做过类似的事情了?
很抱歉这个问题很长,谢谢!