![](/img/trans.png)
[英]HTTPWebRequest.GetResponse() throws connection failure exception
[英]HttpWebRequest.GetResponse methods throws 404 exception
我想使用控制台應用程序從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並根據狀態和響應內容(如果需要)確定如何處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.