【发布时间】:2012-01-27 16:07:19
【问题描述】:
我正在编写一个 windows phone 7.1 应用程序,当用户单击特定按钮时,将使用 MediaPlayerLauncher 播放 youtube 视频。
问题是,MediaPlayerLauncher 不能仅通过提供视频的 url 来播放视频;视频的链接本身在页面的 html 中。现在,我设法通过使用 WebClient() 下载 html 并从中提取视频的链接来提取该 html,方法是将此事件附加到“客户端”,即我的 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 时,该脚本丢失了。
所以也许这就是问题所在?有谁知道如何解决这个问题,或者您可能已经以不同的方式做了类似的事情?
抱歉问题太长了,谢谢!
【问题讨论】:
-
您最好使用
WebBrowserTask或使用API 获取URL:stackoverflow.com/questions/4869564/… -
这是个好主意,为我节省了很多工作,谢谢!
-
您能发表您的评论作为答案吗?我不想让这个问题悬而未决,您也会得到好处:)
标签: c# webclient windows-phone-7.1