2016-03-05 43 views
0

我在我的項目中運行Xamarin.Android 6.0.1.10的RestSharp 105.2.3.0。與Xamarin一起使用RestSharp - 當HTTP請求失敗時Execute()拋出異常

一切正常,但是如果HTTP請求沒有成功(我想這與Xamarin平臺的更新有關),幾天來,對Execute()方法的調用開始拋出異常。

例如,我收到「System.Net.WebException:遠程服務器返回錯誤:(403)禁止。」如果主機不可訪問,則爲403響應狀態碼和「System.Net.Sockets.SocketException:沒有路由到主機」。

這很奇怪,因爲這個頁面上 - https://github.com/restsharp/RestSharp/wiki/Recommended-Usage - 我看到:

Note that exceptions from Execute are not thrown but are available in the ErrorException property.

而且,我發現了一個SO question這是或多或少相同的問題。

提出的解決方案是設置IgnoreResponseStatusCode屬性:

var client = new RestClient(); 
client.IgnoreResponseStatusCode = true; 

但我沒有看到RESTClient實現那些可之間的這種性質。

我該如何解決這個問題?當然,我可以在try..catch中包裝Execute調用,但我寧願避免它,因爲Execute不應該首先拋出異常。

+0

如果行爲是不符合的文件,我的文件與RestSharp隊 – Jason

+0

的錯誤我創建GitHub上的問題,看看是否可能有理由對這種行爲 - HTTPS ://github.com/restsharp/RestSharp/issues/822 – bene11i

+0

@ bene11i,我試圖在我的PCL項目中安裝RestSharp,我沒有得到。你能幫我怎麼安裝在xamarin.forms?謝謝。 – pnet

回答

0

我已經想通了。

該問題與事實有關,在Visual Studio中的異常設置窗口(調試 - >異常...)中,所有複選框都在「異常發生時拋出:拋出」列中檢查。

因此,該異常被RestSharp代碼捕獲,但VS仍然在執行調用時破壞執行,因爲它已配置爲執行此操作。

截圖:http://i.stack.imgur.com/a0Fc4.png