![](/img/trans.png)
[英]the remote server returned an error (404) not found. at system.net.httpwebrequest.getresponse()
[英]HttpWebRequest throws “The remote server returned an error: (404) Not Found.” for 404
我正在嘗試發出網絡請求:
String url = @"http://stackoverflow.com/aaaaaaaa.html";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
String responseText;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.NotFound) //404
return "";
using (StreamReader responseStream = new StreamReader(response.GetResponseStream()))
{
responseText = responseStream.ReadToEnd();
}
}
問題是該行:
request.GetResponse();
引發異常:
為什么HttpWebRequest
拋出異常? 以及我如何使其停止?
有人可以建議一種方法或.NET類,該方法或類可以讓我與網絡服務器進行通訊,並檢索完全有效的但並不例外的 404。
HttpClient有其自身的問題 ,因此無需考慮。
這是我之前編寫的一些代碼,歡迎您使用該代碼處理這種情況。 如果引發異常,則可以通過捕獲WebException來獲取狀態代碼。
public class WebResult
{
public string Response { get; set; }
public bool WasSuccessful { get; set; }
public HttpStatusCode? StatusCode { get; set; }
}
public WebResult GetUrlContents(string url)
{
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
using (var response = (HttpWebResponse)request.GetResponse())
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
return new WebResult
{
WasSuccessful = true,
Response = responseStream.ReadToEnd(),
StatusCode = response.StatusCode
};
}
}
catch (WebException webException)
{
return new WebResult
{
Response = null,
WasSuccessful = false,
StatusCode = (webException.Response as HttpWebResponse)?.StatusCode
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.