當我們使用HttpWebRequest發送請求的時候如果服務器返回的不是200狀態,那么請求代碼肯定會異常,其實請求和返回並沒有什么異常,只是.net內部就認定了 返回的不要是200 就是異常
那么我們怎么捕獲這個HttpWebResponse異常呢
try
{
HttpWebRequest httpReq = WebRequest.Create(Url) as HttpWebRequest;
WebResponse wenReq = null;
HttpWebResponse httpRes = null;
string OutHtml = "";
try
{
httpReq.Method = "POST";
//.................
//寫入參數
byte[] postData = Encoding.UTF8.GetBytes(parmst);//參數編碼UTF-8
System.IO.Stream outputStream = httpReq.GetRequestStream();
outputStream.Write(postData, 0, postData.Length);
outputStream.Close();
//這里如果服務器不返回200狀態就會報異常
wenReq = httpReq.GetResponse();
httpRes = wenReq as HttpWebResponse;
Stream strRes = httpRes.GetResponseStream();
using (StreamReader read = new StreamReader(strRes, Encoding.UTF8))
{
OutHtml = read.ReadToEnd();
}
httpReq.Abort();
strRes.Close();
strRes.Dispose();
httpRes.Close();
}
catch (WebException ex) // 這樣我們就能捕獲到異常,並且獲取服務器端的輸出
{
wenReq = (HttpWebResponse)ex.Response;
using (StreamReader sr = new StreamReader(wenReq.GetResponseStream(), Encoding.UTF8))
{
LogResult(Url + ";Exception Err:" + ex.Message + ";Err JSON:" + sr.ReadToEnd(), "httperr");
}
httpReq.Abort();
}
catch (Exception ex)
{
//bgTask g = new bgTask();
LogResult(Url + ";Exception Err:" + ex.Message, "httperr");
}
