我正在尝试从网址下载图片: http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2
我正在使用HttpWebRequest
webRespose
Stream
BinaryReader
FileStream
BinaryWriter
这适用于其他网站和图片,但我在上面给出的网址给了我一个空的0字节文件..
表示我无法保存该网址中的图片。
有没有人可以帮助我?
答案 0 :(得分:6)
我正在使用HttpWebRequest webRespose流BinaryReader FileStream BinaryWriter
为什么只使用一个时可以使用6个不同的类?
string sourceUrl = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
string localPath = @"C:\foo\bar\340582.png";
using (WebClient wc = new WebClient())
{
wc.DownloadFile(sourceUrl, localPath);
}
如果您需要从此URL加载图像,您可以这样做(我假设您正在使用WinForms / GDI):
string sourceUrl = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
string localPath = @"C:\foo\bar\340582.png";
Image image;
using (WebClient wc = new WebClient())
using (Stream stream = wc.OpenRead(sourceUrl))
{
image = Image.FromStream(stream);
}
答案 1 :(得分:1)
我想知道你是否曾多次访问他们的网站,他们现在阻止你滥用......
他们很可能正在检查已发送的标头,并且不允许机器人获取其知识产权。
我想到了两种可能的解决方案:
你应该两个都做。
重点是,我怀疑这是代码问题,更可能违反了他们的服务条款。
和乐趣:
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
// Setting the useragent seems to resolve certain issues that *may* crop up.
httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
答案 2 :(得分:1)
我刚测试了这个,下载并保存图片给我。您可能需要检查MIME类型以及沿途的所有内容。
string url = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
using (System.Drawing.Image img = System.Drawing.Image.FromStream(WebRequest.Create(url).GetResponse().GetResponseStream())) {
img.Save("new.jpg");
}