2010-10-18 36 views
1

我開發一個Java應用程序,使一個HTTP請求發送到Web服務,並返回XML。如果響應代碼是200,那麼requestSucceeded()回調方法將XML發送到SAXParser的用不同的SAX處理程序,根據正在叫什麼網絡服務。如果響應代碼不是200,則調用requestFailed()回調方法。處理不同的XML響應文檔與一個SAX處理程序

我調用的Web服務將返回兩種類型的XML文檔(響應代碼爲200):包含成功響應信息的XML文檔或包含錯誤信息的XML錯誤文檔(例如,如果一個請求參數的格式不正確)。

我的問題是這樣的:由於我的當前設置,什麼是尋找/處理兩種類型的XML文檔(一個成功的XML響應或XML錯誤文檔)的最好方法? SAX Handler正在查找所有相關的響應信息,並將該信息存儲到一個對象中,然後由我的應用程序進行處理。有沒有更好的解決方案,而不是總是先查找唯一的XML錯誤標籤?

謝謝!

回答

1

選項#1 - 更改Respose代碼

爲什麼要退響應代碼爲200的錯誤? 400(錯誤請求)或其他錯誤代碼可能是更好的選擇。然後,您可以根據響應代碼處理XML。

選項#2 - 交換內容處理器

下面是我以前的答案一個一個鏈接,我將解釋如何交換內容的處理器,同時處理文檔。您可以有一個內容處理程序確定響應是內容還是錯誤,然後交換適當的內容處理程序以處理其餘內容。

選項#3 - 使用JAXB

如果最終結果是將XML轉換爲一個對象,你有沒有考慮過使用JAXB?它將基於返回的內容基於XML構建一個對象。

+0

選項#2是適合我,謝謝!不幸的是,我是從我沒有開發Web服務請求,讓我無法控制,有錯誤的有200作爲選項#3響應代碼,我從來沒有聽說過JAXB之前,但似乎真的很有用。但是,我正在開發一個不支持它的移動平臺。儘管如此,我一定會在未來使用它來做其他事情。非常感謝! – littleK 2010-10-19 14:16:41