當我們使用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"); }