HttpWebRequest 遠程服務器返回錯誤: (500) 內部服務器錯誤。


現象:

我們在發起請求時,類似如下代碼

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "text/html";// "text/xml";// "application/xml";
                Stream myRequestStream = request.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, utf8Coding);
                myStreamWriter.Write(dataStr.Trim());
                myStreamWriter.Close();
                response = (HttpWebResponse)request.GetResponse();    

如果出現異常,或者請求不存在時就會在 

                response = (HttpWebResponse)request.GetResponse(); 

  中拋出異常:遠程服務器返回錯誤: (500) 內部服務器錯誤。

分析原因:

客戶端應用程序接受了HTTP 協議錯誤后

把這個HTTP 協議錯誤轉換成 Status 設置為 WebExceptionStatus.ProtocolError 的 WebException,並且把這個異常throw出來。

解決問題:

 

            try
            {               
                response = (HttpWebResponse)request.GetResponse();          
            }
            catch (WebException ex) 
            {
                response = (HttpWebResponse)ex.Response;               
            }
            StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), utf8Coding);
            string result= myStreamReader.ReadToEnd();
            myStreamReader.Close();
            response.Close();
            return result;

 

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

來指示遇到的實際 HTTP 錯誤。

 


免責聲明!

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



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