c# HttpWebResponse 各種情況下 獲取StatusCode狀態碼


捕捉網頁出現404、500等會直接拋出WebException異常

異常代碼:

(HttpWebResponse)req.GetResponse(); 

當執行這段代碼出現異常

解決問題

那如果我們想獲得錯誤發生時候服務器段錯誤頁面的源代碼該如何做呢?

其實非常非常簡單的做法,我們用下面的代碼就不論錯誤發生與否,都可以獲得服務器段頁面的源代碼。

 public string HttpPost(string Url, string postDataStr, string ContentType = "application/x-www-form-urlencoded", string Headers = "", string codingStr = "gb2312")
        {
            string retString = string.Empty;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";
            request.ContentType = ContentType;
            byte[] buffer = Encoding.UTF8.GetBytes(postDataStr);
            request.ContentLength = buffer.Length;
            if (!string.IsNullOrEmpty(Headers))
            {
                var headersArry = Headers.Split('&');
                for (int i = 0; i < headersArry.Length; i++)
                {
                    request.Headers.Add(headersArry[i].Split('|')[0], headersArry[i].Split('|')[1]);
                }
            }
            using (Stream myRequestStream = request.GetRequestStream())
            {
                myRequestStream.Write(buffer, 0, buffer.Length);
                myRequestStream.Close();
            }
            HttpWebResponse response;
            try { response = (HttpWebResponse)request.GetResponse(); }
            catch (WebException ex) { response = (HttpWebResponse)ex.Response; }
            //HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            //獲取響應內容
            using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding(codingStr)))
            {
                retString = myStreamReader.ReadToEnd();
            }
            myResponseStream.Close();
            return retString;
        }

  

當異常發生事后,WebException 中不僅有 StatusCode 標志着 HTTP 的錯誤代碼,而且它的 Response 屬性還包含由服務器發送的 WebResponse,來指示遇到的實際 HTTP 錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM