15
我需要在響應狀態代碼不是200 OK的情況下從HTTP GET讀取響應。有時它是401,其他403,但是會有一個響應內容。如果我嘗試使用HttpWebResponse和HttpWebRequest類,它會在響應狀態不是200 OK時引發異常。有什麼建議麼?當HTTP狀態不是200 OK時ASP.NET獲取Web響應
我需要在響應狀態代碼不是200 OK的情況下從HTTP GET讀取響應。有時它是401,其他403,但是會有一個響應內容。如果我嘗試使用HttpWebResponse和HttpWebRequest類,它會在響應狀態不是200 OK時引發異常。有什麼建議麼?當HTTP狀態不是200 OK時ASP.NET獲取Web響應
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());
}
}
除非'response'在catch爲空,就像是我的話,就拋出另一個異常是完全無用的...我是用故意斷開服務器的測試,雖然。我的例外「無法連接到遠程服務器」對我來說已經夠好了。但是,對於其他問題,狀態代碼和其他問題的細節通常都是例外情況。我對這段代碼的建議 - 只是處理null響應 - 可能是'return e.ToString();'對於這種情況就足夠了。 – vapcguy 2017-05-03 22:41:59
AND NEXT TIME - 添加一個'request.Credentials = CredentialCache.DefaultCredentials;'作爲第二行代碼!我不斷收到'(401)Unauthorized'錯誤,但無法弄清楚,因爲我正在調用一個Web服務,在那裏添加了該行,然後我正在嘗試此代碼!你也要這樣做! – vapcguy 2017-05-04 18:01:30
而這段代碼並沒有提供'401',它會說'未經授權的狀態碼。 – vapcguy 2017-05-04 22:02:27