我有一个旧的 API,我想在我的 Android 应用程序中实现它。有一个现有的旧版 Android 应用程序使用 apache 的 HttpPost 类 org.apache.http.client.methods。
API的响应格式如下:
<?xml version='1.0' encoding='UTF-8' ?>
<root>
<status>OK</status>
<items>
<item>
<refno>123456</refno>
<vehicle_name>BMW</vehicle_name>
<model>BM1234</model>
<color>BLACK</color>
</item>
</items>
</root>
它是一个纯 SOAP 库吗?因为经过几个小时的研究,我发现实际的 SOAP 响应包含 wsdl
标记,但此 API 中的响应很简单。请建议我如何在我的 Android 应用程序中实现这个 API。
最佳答案
SOAP是用于描述对象的XML协议(protocol)。虽然它可以在许多不同的协议(protocol)上工作,但通过 HTTP 使用它基本上是基于 HTTP 的 XML,需要一些额外的设置(通常是 HTTP header )才能使其工作。
WSDL是用于充分描述给定端点上托管的 Web 服务的元数据,以便机器可读。存在许多用于 Web 服务的客户端生成库,它们可以创建可以调用 Web 服务的客户端。
如果您已经可以使用 apache 客户端调用 Web 服务端点并获取响应,那么您或多或少可以忽略 WSDL 和所有这些内容。您正在执行足够的 SOAP 来调用 Web 服务。
收到响应后,使用您最喜欢的 XML 库反序列化/解析 XML。
Android 有几个 built in ,您可以使用 DOM 以老式方式完成此操作,使用构建在 DOM 之上的库,如 dom4j甚至是真正老式的 SAX 方式。
对于非常大的 XML 消息,您需要使用流式解析器,例如 Stax ,但一般来说 DOM 更容易上手。
最后编写您自己的内容并确保将答案添加到 this SO Question :)
关于java - 在 Android 中实现 SOAP API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67767903/