在Suds python中覆盖Soap Envelope

时间:2010-03-30 10:09:20

标签: python xml soap suds envelope

我有一个相机,我正试图连接到肥皂泡沫。我试图发送原始的xml,并发现阻止xml suds工作的唯一因素是不正确的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 个答案:

答案 0 :(得分:5)

我通过手动覆盖suds.binding.envns模块中的bindings变量解决了这个问题:

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

从现在开始,一切顺利(使用我的服务,即

答案 1 :(得分:1)

我设法使其工作,肥皂信封被硬编码到bindings.py,存储在您的网站包中的suds.egg中。我将SOAP信封地址更改为http://www.w3.org/2003/05/soap-envelope。这与我的相机兼容。我无法在suds中找到覆盖此信封的命令,因此我将其硬编码到bindings.py中。

感谢您的帮助

答案 2 :(得分:1)

手动更新binding.py绝对不是正确的方法。您应该能够利用ImportDoctor覆盖默认绑定。在Suds网站上查看fixing broken schemas的文档。

此外,您使用的是什么版本的Python和suds?

答案 3 :(得分:0)

debug_toolbar.middleware.DebugToolbarMiddleware