正在寻找有关如何完成列表操作的帮助。代码就像
client = Client(wsdl, plugins=[history, MyLoggingPlugin()])
client.service.list(?????,????)
基于python3命令的摘录:python –m zeep wsdl_file:
Global elements:
....
ns0:list(ns0:ListRequest)
....
Global types:
xsd:anyType
....
ns0:BaseFilter(isAscending: xsd:boolean, pageNumber: xsd:int,
recordsPerPage: xsd:int, maxRecordsPerPage: xsd:int)
....
Operations:
....
list(filter: ns0:BaseFilter) -> objectId: ns0:ObjectId[]
....
深入研究文档,我知道ns0:BaseFilter是一个复杂的元素,我将需要使用client.get_type
。因此,使用下面的代码,我前进并获得了更近的结果。
myUserFilter = myBaseFilter(isAscending=True, pageNumber=0)
SendingXML = client.create_message(client.service, 'list', myUserFilter) `
然后,SendingXML如下所示:
<ns0:list xmlns:ns0="http://www.strongmail.com/services/v2/schema">
<ns0:filter>
<ns0:isAscending>true</ns0:isAscending>
<ns0:pageNumber>0</ns0:pageNumber>
</ns0:filter>
</ns0:list>
</soap-env:Body>
我不确定如何在过滤器元素行/标题上获取其他项目。
<ns0:filter>
应该是以下内容(因为这是一个示例,所以缺少ns0)
<filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="UserFilter">
答案 0 :(得分:0)
通过幸运的猜测,由于我不完全了解供应商文档和WSDL,因此找到了创建正确xml的解决方案。
列表操作期望BaseFilter类型作为输入,但是如果我使用UserFilter类型则可以。代码更改如下。
myBaseFilter = client.get_type('ns0:UserFilter') #Changed from ns0:BaseFilter
myUserListReq = myBaseFilter(isAscending=True, pageNumber=0, recordsPerPage=10,maxRecordsPerPage=200)
SendingXML = client.create_message(client.service, 'list', myUserListReq)
SendingXML现在正确。
<soap-env:Body>
<ns0:list xmlns:ns0="http://www.strongmail.com/services/v2/schema">
<ns0:filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns0:UserFilter">
<ns0:isAscending>true</ns0:isAscending>
<ns0:pageNumber>0</ns0:pageNumber>
<ns0:recordsPerPage>10</ns0:recordsPerPage>
<ns0:maxRecordsPerPage>200</ns0:maxRecordsPerPage>
</ns0:filter>
</ns0:list>
</soap-env:Body>
希望..这可能会在将来对某人有所帮助。
如果有人对如何在-m zeep WSDL_File
输出中发现我有任何想法,那将是一个好处,因为我不确定我还会遇到什么其他事情。