【发布时间】:2021-07-27 18:20:54
【问题描述】:
我需要处理另一个程序的 Web 服务接口。 API 以 wsdl 格式提供,我已经通过 zeep 实现了集成。 API 的一项功能是强制性的,它需要来自 Java 的 MapAdapter 作为传递参数(在 XML 文档“值”中)。我自己的程序是用 Python 编写的。有没有人遇到过同样的问题并有解决办法?
编辑:API函数的XML文档:
<soapenv:Envelope >
<soapenv:Header/>
<soapenv:Body>
<v23:write>
<connection>
<handle>?</handle>
</connection>
<channel>?</channel>
<values>
<!--Zero or more repetitions:-->
<entries>
<key>?</key>
<value>?</value>
</entries>
<values>
</v23:write>
</soapenv:Body>
</soapenv:Envelope>
【问题讨论】:
-
什么意思“需要Java的MapAdapter作为传递参数”?您正在调用需要 XML 消息的 SOAP Web 服务。您所要做的就是向它发送一个结构正确的 XML 请求。您不必在 Python 代码中处理任何 Java。也许编辑您的问题以添加有关它的更多详细信息并明确问题所在。
-
我正在使用 zeep 来包含 wsdl 文件。通过 zeep 可以访问 API 的方法。所以该方法需要Java类
MapAdapter。 API 对 f.e. 没问题。一个 Python 字典,但在 API 后面,它只接受这个类。 -
zeep 允许您使用 Python 代码和 Python 数据调用 Web 服务方法以发送到这些方法。 Zeep 然后将所有这些编组为 XML 格式,并将您的 Python 方法调用转换为对 Web 服务的 SOAP 调用。没有 Java 类。如果服务是用 Java 编写的,则可能在 Web 服务端,但您并不关心这一点,因为客户端从 Python 调用服务。我要求提供更多详细信息,因为您的问题对 SOAP Web 服务的工作方式没有真正意义。
-
Web 服务代码是用Java 编写的,没错。我的问题有点复杂,因为 API 只检查对象是否是可迭代的,所以它发送了一个肯定的响应。在我看来,错误在 API 后面,如果
MapAdapter接口访问函数,并且这里发生错误,我无法读出。 -
那么你得到了什么结果?错误信息?一个空的结果?您是如何发现 MapAdapter 问题的?
标签: java python api dictionary soap