2011-06-03 74 views
15

我需要在響應狀態代碼不是200 OK的情況下從HTTP GET讀取響應。有時它是401,其他403,但是會有一個響應內容。如果我嘗試使用HttpWebResponse和HttpWebRequest類,它會在響應狀態不是200 OK時引發異常。有什麼建議麼?當HTTP狀態不是200 OK時ASP.NET獲取Web響應

回答

34
var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/1"); 
try 
{ 
    using (WebResponse response = request.GetResponse()) 
    { 
     // Success 
    } 
} 
catch (WebException e) 
{ 
    using (WebResponse response = e.Response) 
    { 
     HttpWebResponse httpResponse = (HttpWebResponse)response; 
     Console.WriteLine("Error code: {0}", httpResponse.StatusCode); 
     using (var streamReader = new StreamReader(response.GetResponseStream())) 
      Console.WriteLine(streamReader.ReadToEnd()); 
    } 
} 
+0

除非'response'在catch爲空,就像是我的話,就拋出另一個異常是完全無用的...我是用故意斷開服務器的測試,雖然。我的例外「無法連接到遠程服務器」對我來說已經夠好了。但是,對於其他問題,狀態代碼和其他問題的細節通常都是例外情況。我對這段代碼的建議 - 只是處理null響應 - 可能是'return e.ToString();'對於這種情況就足夠了。 – vapcguy 2017-05-03 22:41:59

+0

AND NEXT TIME - 添加一個'request.Credentials = CredentialCache.DefaultCredentials;'作爲第二行代碼!我不斷收到'(401)Unauthorized'錯誤,但無法弄清楚,因爲我正在調用一個Web服務,在那裏添加了該行,然後我正在嘗試此代碼!你也要這樣做! – vapcguy 2017-05-04 18:01:30

+0

而這段代碼並沒有提供'401',它會說'未經授權的狀態碼。 – vapcguy 2017-05-04 22:02:27

相關問題