在 Android 中实施 SOAP api

Implementing SOAP api in Android

我想在我的 Android 应用程序中实现一个旧的 API。现有的旧 android 应用程序使用 apache 的 HttpPost class 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 和 REST 并没有太大区别。这只是http请求。正如 dan1st 提到的,只需为 XML 发出 GET 请求,然后解析它。您可以找到像这样使用 SAX 的教程:

https://www.tutlane.com/tutorial/android/android-xml-parsing-using-sax-parser

SOAP 是 XML 描述 objects 的协议。虽然它适用于许多不同的协议,但通过 HTTP 使用它基本上是 XML 通过 HTTP,需要一些额外的设置(通常是 HTTP Headers)才能使其工作。

WSDL 是用于描述托管在给定端点上的 Web 服务的元数据,足以使机器可读。许多 Web 服务的客户端生成库可以创建可以调用 Web 服务的客户端。

如果您已经可以调用 Web 服务端点并使用 apache 客户端获得响应,那么您或多或少可以忽略 WSDL 和所有这些东西。您执行的 SOAP 足以调用 Web 服务。

收到响应后,使用您最喜欢的 XML 库反序列化/解析 XML。

Android 有几个 built in, you can do it the old fashioned way with the DOM, use a library built on top of the DOM like dom4j 甚至是真正老式的 SAX 方法。

对于非常大的 XML 消息,您希望使用像 Stax 这样的流式解析器,但通常 DOM 更容易上手。

最后写下你自己的,并确保你添加了一个答案 this SO Question :)