我正在使用HtmlAgilityPack。 我正在从一个网站下载文章和图像。 80%的图像下载没有问题。但是有些图像会引发错误。我可以在image_failed事件中看到错误的名称。 我下载的图像那样:AG_E_NETWORK_ERROR在WindowsPhone中从网络下载一些图像
Image = new BitmapImage(new Uri(img.Attributes["src"].Value));
我已搜查谷歌,发现这确实是跆拳道的问题。
我正在使用HtmlAgilityPack。 我正在从一个网站下载文章和图像。 80%的图像下载没有问题。但是有些图像会引发错误。我可以在image_failed事件中看到错误的名称。 我下载的图像那样:AG_E_NETWORK_ERROR在WindowsPhone中从网络下载一些图像
Image = new BitmapImage(new Uri(img.Attributes["src"].Value));
我已搜查谷歌,发现这确实是跆拳道的问题。
引荐者标题很可能会让你感到困扰。您需要自己发出呼叫(而不是依靠BitmapImage下载文件)。
有一个方便的代码段/实用程序可以“扩展”xaml,使其更易于操作。
编辑:解释
很多网站阻止不从他们的网站来图片的请求。这样,如果您有http://mysite.com并且您链接到http://cnn.com中的图像,则它们可以阻止直接链接的图像并重定向它们或其他东西。
现在,它的工作原理是浏览器控制所有来自标记(或来自任何其他机制,如AJAX)的调用,并添加了REFERRER HTTP标头,说明请求来自哪里(http://mysite.com)那么cnn.com代码可以阻止它。
在.NET桌面,网址标头没有自动添加到请求 - 这意味着,呼叫会被一些网站,检查空引用,而不是对别人不被阻止。
切换到基于Silverlight的WP7/8。在Silverlight中,引用者是Silverlight控件所在的站点。所以,如果你有一个在http://mysite.com上运行的SL控件,并且它发出[任何] http请求,则引用标头将自动设置为http://mysite.com。没有办法控制afaik(出于安全原因)。但是,基于SL的Windows Phone不需要受到相同安全约束的约束。但是,当他们将代码“移植”到Windows Phone时,他们会将一些值添加到引用者中 - 值实际上是手机内的包位置(可以使用fiddler来查看)。这实际上是一些路径(/ apps/storage/[guid])或类似的东西 - 我不记得确切的价值。要解决这个问题,你需要在发出请求的HTTP头文件中设置引用链接。
希望能够说清楚。
感谢它的工作。 – 2013-04-21 14:44:52
但是你能解释一下代码吗?我无法理解它为什么起作用 – 2013-04-21 14:55:01
添加了解释。希望有所帮助。 – 2013-04-22 08:27:15