图像从Web URL加载c#

我试图从weburl的“toolStrip”ic#中显示图像。 我使用以下方法来获取图像

WebRequest requestPic5 = WebRequest.Create(icon_path); requestPic5.Timeout = 5000; WebResponse responsePic5 = null; Image Myimg5 = null; if (requestPic5 != null) { responsePic5 = requestPic5.GetResponse(); if (responsePic5 != null) { Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); } } 

Myimg5 = Image.FromStream(responsePic5.GetResponseStream());时失败Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); 抛出exception,但图片仍在url中

但不幸的是,大部分时间它没有正确加载,有时会抛出404错误

响应流还有其他您不一定需要的东西。 你真的只想要imgage文件的原始数据,所以你可以使用:

new MemoryStream(new WebClient().DownloadData("http://address/file.ico"));

可能该网站受到热链接保护。 由于与html页面相比图像尺寸较大,并且网站为其使用的带宽付费,因此这是一种用于保护网站免受其他网站的bsndwidth盗窃的机制。

这个想法是使用某种身份validation,并确保真正的用户要求图像。 这通常通过包含图像的页面上的cookie来完成。 您需要获取这些cookie并将其与您的请求一起发送。 您需要在请求中添加CookieContainer ,然后请求图像所在的页面,最后检索图像(对所有步骤使用相同的请求,将自动添加和使用Cookie)。