java - 在 Android 中实现 SOAP API

标签 java android api soap wsdl

我有一个旧的 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/

相关文章:

java - 为 REST API 返回部分成功响应的好方法是什么?

android - Android下OpenCV-imdecode联动错误

java - 如何从数据库中获取距当前时间最快的值?

android - Android MVVM startActivity 的最佳实践

java - 如何使用Java从mysql获取最后2分钟的数据

JavaFX:如何更改动画中多边形的点?

java - IntStream 什么时候真正关闭? SonarQube S2095 是 IntStream 的误报吗?

java - 如何在处理中的不同时间间隔后触发不同的事件?

php - 如果 key 正确,如何将亚马逊 key 保存在数据库中?

javascript - ReactJS 简单的登录表单