如何使用 Zeep 为 SOAP 函数传递多个参数?

问题描述 投票:0回答:0

我正在使用 Zeep 访问 Web 服务。从web服务的wsdl来看,有多个函数/操作。他们都将“字符串”作为输入。我能够使用以下代码访问并获取所有功能的输出:

from zeep import Client
from requests import Session
from requests.auth import HTTPBasicAuth
from zeep.transports import Transport

session = Session()
session.auth = HTTPBasicAuth('user', 'password')

wsdl = "https://website.asmx?wsdl"
client=Client(wsdl,transport=Transport(session=session))

y=client.service.Function('string input')

上面的代码将输出来自网络服务的结果,因为它只有一个字符串输入。 但是,我在具有多个输入的 wsdl 中有另一个函数。我知道如果你有多个输入,你可以将它们全部组合在字典中

request_data={'param1' : 'string1','param2': 'string2'}
。但是,此函数中的一个输入是一个查询,它将多个字符串作为输入。这些字符串基本上是 web 服务中一个表的标题,我可以通过调用列标题从该表中调出数据。但是,我不知道如何将所有这些字符串组合到一个输入中。 SOAP 消息中这些字符串的 XML 格式如下:

<Query xsi:type="xsd:string">&lt; xmlns="link" version="version number"&gt;
  &lt;string1=""&gt;
    &lt;string2 /&gt;
    &lt;string3 /&gt;
    &lt;string4&gt;
      &lt;string5 /&gt;
    &lt;/string6&gt;
    &lt;string7/&gt;
    &lt;string8&gt;
      &lt;string9 /&gt;
      &lt;string10 /&gt;
      &lt;string11 /&gt;
    &lt;/string12&gt;
  &lt;/string13&gt;
&lt;/string14&gt;</Query>

如何转换此 XML SOAP 输入,以便 Zeep 接受它作为输入?

我尝试在 python 中使用 XML 格式组合字典中的所有字符串,如下所示

request_data={'Query':'&lt; xmlns="link" version="version number"&gt;
  &lt;string1=""&gt;
    &lt;string2 /&gt;
    &lt;string3 /&gt;
    &lt;string4&gt;
      &lt;string5 /&gt;
    &lt;/string6&gt;
    &lt;string7/&gt;
    &lt;string8&gt;
      &lt;string9 /&gt;
      &lt;string10 /&gt;
      &lt;string11 /&gt;
    &lt;/string12&gt;
  &lt;/string13&gt;
&lt;/string14&gt;'}

但是,我收到以下错误:Function_Name(Inspect number of queries)Root element is missing.

xml web-services soap wsdl zeep
© www.soinside.com 2019 - 2024. All rights reserved.