2010-10-18 76 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