C# HttpWebRequest.GetResponse方法引发404异常
我想使用控制台应用程序从url下载一个图像 我使用了以下代码: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 = (
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并根据状态和响应内容确定如何处理(如果需要)