locked
关于下载图片的问题 RRS feed

  • 问题

  • 使用WebClient下载图片,总是报System.Net.WebException: The remote server returned an error: NotFound. 在模拟器上偶尔也可以正常显示,但关闭模拟器,再重新运行,可能还会报这错误。用真机测试,也是无法正常显示图片。后来我用HttpWebRequest方式下载图片依然存在这问题。请教此问题如何解决?

    public MainPage()
    {
        InitializeComponent();
        WebClient wc = new WebClient();
        wc.OpenReadAsync(new Uri("http://img.cnbeta.com/upimg/120220/tequila_1027351601232709.png"));
        wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
    }
    
    void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine(e.Error);
        if (!e.Cancelled && e.Error == null)
        {
            BitmapImage bmi = new BitmapImage();
            bmi.SetSource(e.Result);
            img.Source = bmi;
        }
    }


    2012年2月28日 6:28

答案

  •   wc.OpenReadAsync(new Uri("http://img.cnbeta.com/upimg/120220/tequila_1027351601232709.png"));
      wc
    .OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
      这两句交换一下位置即可.
    • 已建议为答案 Otomii Lu 2012年3月2日 1:20
    • 已标记为答案 Shi Ding 2012年3月13日 6:28
    2012年3月1日 16:42

全部回复

  • 你好,关于你的问题我无法直接定位到问题所在

    首先,在你的论述中指出偶尔可以正常显示,说明,有几次,WebClient请求成功地请求到了图片的下载,这证明代码无问题,那么我猜想是服务端的问题,因为你的报出的错误是Not Found,就是你的Http请求,直接没有找到你所指向的IP地址.

    我看了下你的图片是cnbeta的一张图片,我建议换一张图片进行尝试,以保证服务器一直可以被找到,不会报出Not Found错误.

    2012年2月29日 3:15
  •   wc.OpenReadAsync(new Uri("http://img.cnbeta.com/upimg/120220/tequila_1027351601232709.png"));
      wc
    .OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
      这两句交换一下位置即可.
    • 已建议为答案 Otomii Lu 2012年3月2日 1:20
    • 已标记为答案 Shi Ding 2012年3月13日 6:28
    2012年3月1日 16:42