[英]How to add a new object with suds?
我試圖使用肥皂水,但到目前為止還沒有成功解決這個問題。
這應該是我需要實現的原始肥皂消息:
<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"
},
}
}
我該如何實現這一目標?
你仍然需要用工廠創建對象:
member = client.factory.create('member')
entry = client.factory.create('member.attributes.entry')
entry.key = 'FIRSTNAME';
entry.value = 'test';
member.attributes.entry.append(entry)
在我的頭頂(所有泡沫的東西現在正在工作)
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中定義的結構。
當我嘗試創建“條目”時會發生這種情況:
>>> 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'
>>>
試試這個,類似的東西使用我的WSDL。
member.attributes.entry = {'key':'FIRSTNAME','value':'test'}
正如西蒙所說,它確實取決於你的WSDL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.