繁体   English   中英

肥皂错误的XML序列化

[英]soap wrong xml serialization

我有一个看起来像的wsld定义

...
<sequence>
    <element name="version" nillable="false" type="xsd:string"/>
    <element name="payment" nillable="false" type="tns1:payment"/>
   ...
</sequence>
...

这是发送的请求的xml日志

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://impl.ws.payline.experian.com" ...>
<SOAP-ENV:Header/>
<ns2:Body>
<ns0:doWebPaymentRequest>
<ns0:version>
    <ns0:version>4</ns0:version>
    <ns0:payment>
        <ns1:amount>33300</ns1:amount>
        ...
    </ns0:payment>
</ns0:version>
...

所以suds包围payment对象为version (字符串),并且它打破了请求。 这是为什么 ?? 有什么办法解决吗?

对于那些想知道的:

即时设置对象时,肥皂水似乎有问题。 但是,似乎可以发送裸xml。

所以我要做的是拥有一个xml文件,并用我需要的文件替换其中一部分,然后将其发送

file: obj.xml
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://impl.ws.payline.experian.com" ...>
 ...
<xxx>REPLACE_ME</xxx>
...

和脚本:

client = Client(url='file://path/to/.wsdl')
xml_request = open('/path/to/obj.xml', 'rb').read()
xml_request = xml_request.replace('REPLACE_ME', value)
result = client.service.TheService(__inject={'msg': xml_request})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM