3

私は泡を使用しようとしていますが、これまでのところこれを理解することに失敗しています.

これは、私が達成する必要がある未加工の石鹸メッセージであると想定されています。

<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"
            },
      }
 }

どうすればこれを達成できますか?

4

4 に答える 4

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)
于 2012-08-29T22:50:43.863 に答える
0

これを試してみてください。同様のことが私のWSDLを使用して機能しました。

member.attributes.entry = {'key':'FIRSTNAME','value':'test'}

simon が言ったように、それはあなたの WSDL に依存します。

于 2010-06-02T09:00:15.077 に答える
0

頭のてっぺんから(現在、すべての泡が働いています)

member = client.factory.create('member')
entry = client.factory.create('attributes')
entry.key="FIRSTNAME"
entry.value="test"
member.attributes.entry.append(entry)

これは、SOAP 接続を定義する WSDL に依存しますが、WSDL で定義attributesされた構造でもある必要があります。

于 2010-05-29T07:15:30.017 に答える
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'
>>>
于 2010-05-29T15:57:07.753 に答える