我正在使用 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">< xmlns="link" version="version number">
<string1="">
<string2 />
<string3 />
<string4>
<string5 />
</string6>
<string7/>
<string8>
<string9 />
<string10 />
<string11 />
</string12>
</string13>
</string14></Query>
如何转换此 XML SOAP 输入,以便 Zeep 接受它作为输入?
我尝试在 python 中使用 XML 格式组合字典中的所有字符串,如下所示
request_data={'Query':'< xmlns="link" version="version number">
<string1="">
<string2 />
<string3 />
<string4>
<string5 />
</string6>
<string7/>
<string8>
<string9 />
<string10 />
<string11 />
</string12>
</string13>
</string14>'}
但是,我收到以下错误:Function_Name(Inspect number of queries)Root element is missing.