我有一个相机,我正试图连接到肥皂泡沫。我试图发送原始的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绑定中。有没有办法在肥皂水中覆盖这个?
感谢您的帮助。
答案 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