Вопрос

У меня есть камера, и я пытаюсь подключиться к ней через Sud.Я попытался отправить необработанный XML и обнаружил, что единственное, что мешает работе xml sud, - это неправильное пространство имен конверта 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.Есть ли способ перезаписать это в suds?

Спасибо за любую помощь.

Это было полезно?

Решение 2

Мне удалось заставить это работать, мыльный конверт жестко закодирован в bindings.py который хранится в suds.egg установлен в ваших сайтах-пакетах.Я изменил адрес конверта SOAP на http://www.w3.org/2003/05/soap-envelope.Это было совместимо с моей камерой.Мне не удалось найти команду для перезаписи этого конверта в suds, поэтому я жестко запрограммировал ее в файлеbindings.py.

Спасибо за любую помощь

Другие советы

Я обошел это, переопределив вручную suds.binding.envns переменная в bindings модуль:

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

С этого момента все идет хорошо (с мой сервис, то есть)

Обновление вручную binding.py определенно это не правильный путь.Вы должны уметь использовать ImportDoctor чтобы переопределить привязки по умолчанию.Посмотрите документацию по исправление сломанных схем на сайте Suds.

Кроме того, какие версии Python и suds вы используете?

from suds.client import Client
from suds.plugin import MessagePlugin

WSDL_url = "my_url?wsdl"

class MyPlugin(MessagePlugin):
    def marshalled(self, context):
        #print(str(context.envelope))
        context.envelope.nsprefixes['SOAP-ENV']='myText'

client = Client(WSDL_url, plugins=[MyPlugin()])
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top