7

私はカメラを持っていて、それに接続しようとしています。私は生の xml を送信しようとしましたが、xml の泡が機能しない唯一の原因は、不適切な Soap エンベロープの名前空間であることがわかりました。

エンベロープの名前空間は次のとおりです。

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

そして、私はそれを次のように書き直したい:

xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"

Python で名前空間を追加するために、次のコードを試します。

message = Element('Element_name').addPrefix(p='SOAP-ENC', u='www.w3.org/ENC')

しかしSOAP-ENV、名前空間に追加すると、 suds バインディングにハードコードされているため、書き込みません。これを泡で上書きする方法はありますか?

助けてくれてありがとう。

4

4 に答える 4

6

モジュールsuds.binding.envns内の変数を手動でオーバーライドすることで回避しました。bindings

from suds.bindings import binding
binding.envns=('SOAP-ENV', 'http://www.w3.org/2003/05/soap-envelope')

ここから先は(私のサービスで)うまくいきます

于 2013-01-29T09:48:03.740 に答える
3

私はなんとかこれを機能させました.soapエンベロープはハードコードされており、サイトパッケージbindings.pyにインストールされています. suds.eggSOAP エンベロープ アドレスを に変更しましたhttp://www.w3.org/2003/05/soap-envelope。これは私のカメラと互換性がありました。このエンベロープを suds で上書きするコマンドが見つからなかったので、bindings.py にハードコーディングしました。

助けてくれてありがとう

于 2010-03-30T14:22:50.567 に答える
1

手動で更新することbinding.pyは、間違いなく正しい方法ではありません。ImportDoctorを利用して、デフォルトのバインディングをオーバーライドできるはずです。Suds の Web サイトで壊れたスキーマを修正するためのドキュメントを参照してください。

また、どのバージョンの Python と suds を使用していますか?

于 2010-04-02T23:49:51.137 に答える