微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – HttpWebRequest.GetResponse方法抛出404异常

我想使用控制台应用程序从url下载一个图像.

我使用了以下代码

string sourceUrl = "http://i.ytimg.com/vi/pvBnYBsUi9A/default.jpg"; // Not Found
                //string sourceUrl = "http://i.ytimg.com/vI/OrxZAN1FZUY/default.jpg"; // Found
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sourceUrl);
                HttpWebResponse response = null;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (Exception)
                {

                }

上面的代码抛出异常行“response =(HttpWebResponse)request.GetResponse();”

但是当我在浏览器中访问“http://i.ytimg.com/vi/pvBnYBsUi9A/default.jpg”网址时,将显示图像.

在这里缺少什么?

解决方法

我在Chrome中尝试了该网址“ http://i.ytimg.com/vi/pvBnYBsUi9A/default.jpg
开发者工具.它还接收404,但响应包括显示的图像.

您的代码不是异常的原因.该网站返回404,您的代码获得异常.

您可以编写逻辑来查看响应,即使您获得404并决定是否采用它,就像浏览器那样.

如果您捕获WebException,看起来您可以获得站点返回的响应,这允许您根据文档查看http请求状态和响应.

.Net 4.5 doc的示例…

try 
      { 
            // Creates an HttpWebRequest for the specified URL. 
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
            // Sends the HttpWebRequest and waits for a response.
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
            if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
               Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}",myHttpWebResponse.StatusDescription);
            // Releases the resources of the response.
            myHttpWebResponse.Close(); 

        } 
    catch(WebException e) 
       {
            Console.WriteLine("\r\nWebException Raised. The following error occured : {0}",e.Status); 
       }
    catch(Exception e)
    {
        Console.WriteLine("\nThe following Exception was raised : {0}",e.Message);

WebException具有Response和Status属性.因此,处理此问题的.Net方式似乎是捕获WebException并根据状态和响应内容(如果需要)确定如何处理.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐