簡體   English   中英

哪些特定的狀態代碼會導致HttpWebRequest.GetResponse()拋出WebException?

[英]Which specific status codes cause a WebException to be thrown by HttpWebRequest.GetResponse()?

我已經在尋找一些關於此的明確文件,但沒有找到任何運氣。

對於哪些HTTP響應狀態代碼, HttpWebRequest.GetResponse()在執行類似POST的WebException后會生成WebException

具體來說,它WebException為狀態200 OK以外的任何其他內容生成WebException 或者它只會生成一個WebException ,例如WebException和500(為了參數)?

我想知道,因為我正在與之通信的服務器定義除HTTP 200 OK之外的任何其他內容作為錯誤條件返回。 我可以依賴為200以外的任何其他東西生成WebException嗎?

我目前已編寫代碼來檢查每次返回狀態代碼並確保它是200 OK 如果不是,它將采取適當的行動 - 但是那個代碼和我希望清理的WebException的catch塊之間有很多重復。

任何與文檔相關的鏈接都將非常受歡迎。

在響應和捕獲並檢查WebExceptions之后結束執行顯式檢查; 導致一些重復的代碼,但如果狀態為非200,是否總是會發生WebException沒有確定的答案。

我認為它會,但這聽起來像是一個冒險的假設。 首先, MSDN文檔清楚地表明GetResponse將拋出除WebException之外的異常。 但是,我可以從經驗中明確地說,“304 Not-Modified”響應將作為WebException拋出。

所有這些談話都散發出一股狡猾的Code Smell; 不要使用異常來控制執行流程。 您最好適當地處理異常,然后顯式檢查StatusCode屬性的允許值。

WebException系統是來自HTTP錯誤系統的 獨立 系統 這主要是因為瀏覽器或客戶端返回HTTP錯誤,並且在構建頁面時服務器會拋出WebException。 當發現HTTP錯誤時,頁面將被發送到客戶端,您將不會知道它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM