簡體   English   中英

如何使用suds添加新對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM