Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest.GetResponse方法引发404异常_C#_Asp.net_Web Applications - Fatal编程技术网

C# HttpWebRequest.GetResponse方法引发404异常

C# HttpWebRequest.GetResponse方法引发404异常,c#,asp.net,web-applications,C#,Asp.net,Web Applications,我想使用控制台应用程序从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 = (

我想使用控制台应用程序从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();”行中引发异常

但当我在浏览器中访问“”url时,将显示图像

我在这里遗漏了什么?

我在Chrome中尝试了该url“” 开发工具。它还接收404,但响应包括显示的图像

您的代码不是异常的原因。该站点返回404,您的代码出现异常

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

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

来自.NET4.5文档的示例

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具有响应和状态属性。因此,处理这个问题的.Net方法似乎是捕获WebException并根据状态和响应内容确定如何处理(如果需要)