0

SUDS0.4 経由で Python クライアントを SOAP サーバーに接続しようとしています。通常、SOAP 関数に複雑な引数を提供するには、python 辞書を使用します。たとえば、SOAP 引数が次のようになっている場合:

<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>

私のpythonコードは次のようになります:

result = client.service.myfunction(parameterDesignatorValuePair={'parameterDesignator':val1,'parameterValue':val2})

今、私はプログラムしていないSOAPサーバーに接続しようとしていますが、リクエストのSOAPボディが既存のJavaクライアントからどのように見える必要があるかを知っています:(興味のある部分)

...
<parameterDesignatorValuePairSet>
<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>
<parameterDesignatorValuePair>
<parameterDesignator>Sender</parameterDesignator>
<parameterValue>AAAABwBSAGUAbgBhAHUAbABk</parameterValue>
</parameterDesignatorValuePair>
</parameterDesignatorValuePairSet>
...

したがって、まったく同じ名前「parameterDesignatorValuePair」を持つ2つの複雑な引数で構成される複雑な引数「parameterDesignatorValuePairSet」を渡す必要があります。Python辞書を使用してそれを行うことはできません:-(

リストとタプルを使用しようとしましたが、SUDS からエラーが返されました...

助けてくれてありがとう

4

1 に答える 1

1

これをやろうとしましたか:

param = client.factory.create('ns1:parameterDesignatorValuePairNamespace')
param.parameterDesignator = val1
param.parameterValue = val2

client.service.FunctionName(param)

名前空間は、SUDS 接続後に WSDL ファイルを出力することで利用できます。

于 2011-03-30T08:16:09.240 に答える