2012-10-12 66 views
0

我有一個PHP RESTful API,它返回JSON對象。 我有一個Android客戶端請求的REST請求從APIAndroid如何捕捉從PHP拋出的異常rest

截至目前是否有在服務器端的問題,則API返回的booleanic迴應「假」

我想更改API的流,所以不是發送包含「false」的JSON響應,而是拋出異常,並且我想讓android端捕獲異常。

所以基本上,我想類似下面的Android代碼:

try { 
    php_api.getUsers(); 
} catch (Exception ex) { 
    // TODO 
} 

能不能做到? 是否會以這種方式捕獲任何PHP異常?

+0

沒有。 java異常是針對java的,並不是通過php傳輸的,尤其是不在http上。如果結果爲false,你仍然可以在java端拋出異常。 – njzk2

+0

我的意思是相反的。 - Java的異常能被Java以某種方式捕獲嗎? – Chaiavi

+1

都不行。你可以做的就是發送一個從java中獲取的值,然後拋出一個異常。 – njzk2

回答

1

我還沒有與Java合作過,但我認爲你不能這樣做。 當PHP拋出一個異常時,它仍然會產生某種類型的輸出,這取決於你如何設置異常處理。 它可以顯示堆棧跟蹤或類似的異常消息。 但在客戶端(您的Java應用程序)方面,這只不過是文本。

但是,休息迴應應該總是有頭可以檢查。看看這個:http://blog.zenika.com/index.php?post/2011/05/18/Error-handling-with-REST

通過遵循這裏所寫的內容,您的Java-to-PHP API會在返回內容之前始終讀取響應頭。如果500或400出現,你可以從api中拋出一個java異常,你可以在使用它的代碼中捕獲它。

如果你的PHP端沒有發送你想要的頭文件,你總是可以覆蓋PHP的error/exception處理來產生自定義輸出(包括頭文件)。