簡體   English   中英

HttpWebRequest引發“ 404遠程服務器返回錯誤:(404)未找到。”

[英]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();

引發異常:

  • System.Net.HttpWebResponse
    • “遠程服務器返回錯誤:(404)找不到。”

為什么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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM