python3用suds调用webService, 当参数是对象数组时

from suds.client import Client
url = 'http://127.0.0.1:3945/service/BMS_ExecuteSQLProcedureService.wsdl'
client = Client(url)
print(client)

'''
这里是打印的结果
Suds ( https://github.com/cackharot/suds-py3 )  version: 1.3.4.0 IN  build: 20191029

Service ( BMS_ExecuteSQLProcedureServiceService ) tns="http://product.mittop.com/bms/ws/schema"
   Prefixes (1)
      ns0 = "http://product.mittop.com/bms/ws/schema"
   Ports (1):
      (BMS_ExecuteSQLProcedureServiceSoap11)
         Methods (2):
            executeSQLProcedure(xs:string msgId, xs:string sendTime, xs:string system, xs:string domainCode, items items, )
            executeSQLProcedureJSON(xs:string msgId, xs:string sendTime, xs:string system, xs:string domainCode, items items, )
         Types (2):
            RequestItem
            ResponseItem
'''

#这里必须是ns0, 而不是wsdl中的tns:RequestItem
requestItem = client.factory.create('ns0:RequestItem')
requestItem.procedureName = 'PACKAGE_INTERFACE_EBS.PRO_SYNC_PROJECT_ARRIVE'
requestItem.procedureParameters = ''
requestItem.executePassword = 'myPassword'

print(requestItem)
'''
打印结果
(RequestItem){
   procedureName = "PACKAGE_INTERFACE_EBS.PRO_SYNC_PROJECT_ARRIVE"
   procedureParameters = ""
   executePassword = "myPassword"
 }
'''

'''
这里要求加入item名称, 下面是wsdl中的定义, 我之前因为没有加item名称, 调试不过去,还以为suds有问题呢。
<all>
<element name="msgId" type="string"/>
<element name="sendTime" type="string"/>
<element name="system" type="string"/>
<element name="domainCode" nillable="true" type="string"/>
<element name="items">
<complexType>
<sequence>
<element maxOccurs="unbounded" name="item" type="tns:RequestItem"/>
</sequence>
</complexType>
</element>
</all>
'''

requestItems =[{
    'item': requestItem
}]

print(requestItems)
'''
打印结果
[{'item': <suds.sudsobject.RequestItem object at 0x04854700>}]
'''

result = client.service.executeSQLProcedureJSON('msgId', '2019-11-03 13:45:00','wxc', 'Default', requestItems)
print(result)
'''
打印结果 正确
{"msgId":"msgId","sendTime":"2019-11-03 13:45:00","flag":"S","message":"Success","handleTime":"2019-11-04 14:31:09","items":[{"procedureName":"PACKAGE_INTERFACE_EBS.PRO_SYNC_PROJECT_ARRIVE","procedureParameters":"","errorNumber":0,"errorMessage":"OK"}]}

问题:result = client.service.executeSQLProcedure('msgId', '2019-11-03 13:45:00','wxc', 'Default', requestItems)就通不过,为什么?
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_*大米*_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值