我正在尝试使用肥皂水,但到目前为止还没有成功解决这个问题。
这应该是我需要实现的原始肥皂消息:
<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>
}
}
我究竟如何附加“条目”?
我试过了:
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"
},
}
}
我如何实现这一目标?
答案 0 :(得分:1)
你仍然需要用factory创建对象:
member = client.factory.create('member')
entry = client.factory.create('member.attributes.entry')
entry.key = 'FIRSTNAME';
entry.value = 'test';
member.attributes.entry.append(entry)
答案 1 :(得分:0)
脱离我的头顶(目前所有泡沫的东西都在工作)
member = client.factory.create('member')
entry = client.factory.create('attributes')
entry.key="FIRSTNAME"
entry.value="test"
member.attributes.entry.append(entry)
这取决于定义SOAP连接的WSDL,但attributes
也应该是WSDL中定义的结构。
答案 2 :(得分:0)
当我尝试创建“条目”时会发生这种情况:
>>> 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'
>>>
答案 3 :(得分:0)
试试这个,类似的东西使用我的WSDL。
member.attributes.entry = {'key':'FIRSTNAME','value':'test'}
正如西蒙所说,它确实取决于你的WSDL。