如何使用suds添加新对象?
我正在尝试使用suds,但到目前为止还没能搞明白。
我需要实现的原始soap消息应该是这样的:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:api="http://api.service.apimember.soapservice.com/">
<soapenv:Header/>
<soapenv:Body>
<api:insertOrUpdateMemberByObj>
<token>t67GFCygjhkjyUy8y9hkjhlkjhuii</token>
<member>
<dynContent>
<entry>
<key>FIRSTNAME</key>
<value>hhhhbbbbb</value>
</entry>
</dynContent>
<email>test@test.com</email>
</member>
</api:insertOrUpdateMemberByObj>
</soapenv:Body>
</soapenv:Envelope>
所以我用suds创建了一个成员对象:
member = client.factory.create('member')
结果是:
(apiMember){
attributes =
(attributes){
entry[] = <empty>
}
}
我到底该怎么添加一个'entry'?
我试过这个:
member.attributes.entry.append({'key':'FIRSTNAME','value':'test'})
结果是:
(apiMember){
attributes =
(attributes){
entry[] =
{
value = "test"
key = "FIRSTNAME"
},
}
}
但是,我实际上需要的是:
(apiMember){
attributes =
(attributes){
entry[] =
(entry) {
value = "test"
key = "FIRSTNAME"
},
}
}
我该怎么做到这一点呢?
4 个回答
0
我尝试创建“entry”时发生了这个情况:
>>> member = client.factory.create('member')
>>> entry = client.factory.create('attributes')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win32\egg\suds\client.py", line 231, in create
suds.TypeNotFound: Type not found: 'attributes'
>>>
1
你仍然需要使用工厂来创建对象:
member = client.factory.create('member')
entry = client.factory.create('member.attributes.entry')
entry.key = 'FIRSTNAME';
entry.value = 'test';
member.attributes.entry.append(entry)
0
我随便想想(现在工作上有很多琐事)
member = client.factory.create('member')
entry = client.factory.create('attributes')
entry.key="FIRSTNAME"
entry.value="test"
member.attributes.entry.append(entry)
这要看你用的WSDL,它定义了你的SOAP连接。不过,attributes
也应该是在WSDL中定义的一种结构。