问题描述
我在 python 中使用 zeep 来调用网络服务 (from this wsdl link)。 假设我想调用方法 cardP2PInfo。
我的问题是:
为cardP2PInfo 方法构建输入complexType 对象(希望使用get_type、get_element)的正确方法是什么?当我尝试时,它增加了一层!
在为 cardP2PInfo 方法创建/填充输入结构时我做错了什么???
from zeep import Client
def test():
client = Client('URL_TO_WSDL')
CardP2PInfo = client.get_type('ns0:cardP2PInfo')
CardP2PInfoElement = client.get_element('ns0:cardP2PInfo')
UserCredentials = client.get_type('ns0:UserCredentials')
cardP2PInfoElement = CardP2PInfoElement()
userCredentials = UserCredentials(Login='user',Password='pass')
cardP2PInfoElement.StPimsApiPartnerKey = 'XXXXXXXXX'
cardP2PInfoElement.UserCredentials = userCredentials
cardP2PInfoElement.P2pCardNumber = 'CARD_NUMBER'
cardP2PInfoElement.Lang = 'EN'
cardP2PInfo = CardP2PInfo([cardP2PInfoElement])
result = client.service.cardP2PInfo(cardP2PInfo)
return result
我的代码在 SOAP 下发送,正如您所看到的,它生成了 2 次嵌套的 cardP2PInfoRequest 标签。但是,发送 SOAP 请求时不能有内部 cardP2PInfoRequest 标签
<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<ns0:cardP2PInfo xmlns:ns0="http://st.apus.com/">
<cardP2PInfoRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns0:cardP2PInfo">
<cardP2PInfoRequest>
<StPimsApiPartnerKey>XXXXXXXXX</StPimsApiPartnerKey>
<UserCredentials>
<Login>user</Login>
<Password>pass</Password>
</UserCredentials>
<P2pCardNumber>CARD_NUMBER</P2pCardNumber>
<Lang>EN</Lang>
</cardP2PInfoRequest>
</cardP2PInfoRequest>
</ns0:cardP2PInfo>
</soap-env:Body>
</soap-env:Envelope>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)