Substitua o envelope de sabão no SUDS Python
Pergunta
Eu tenho uma câmera e estou tentando me conectar a ela vesca. Eu tentei enviar XML bruto e descobri que a única coisa que interrompe o XML Suds de trabalho é um espaço de nome de envelope de sabão incorreto.
O espaço para nome do envelope é:
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
E eu quero reescrevê -lo para:
xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
Para adicionar um espaço para nome no Python, eu tento este código:
message = Element('Element_name').addPrefix(p='SOAP-ENC', u='www.w3.org/ENC')
Mas quando eu adiciono o SOAP-ENV
Para o espaço para nome, ele não escreve, pois é codificado nas ligações de espuma. Existe uma maneira de substituir isso na SUDS?
Obrigado por qualquer ajuda.
Solução 2
Consegui fazer isso funcionar, o envelope de sabão é codificado em bindings.py
que é armazenado em suds.egg
instalado em seus pacotes de site. Eu mudei o endereço do envelope de sabão para http://www.w3.org/2003/05/soap-envelope
. Isso foi compatível com minha câmera. Não consegui encontrar um comando para substituir esse envelope na espuma, então eu o codifiquei com as ligações.py.
Obrigado por qualquer ajuda
Outras dicas
Eu peguei por isso, substituindo manualmente o suds.binding.envns
variável no bindings
módulo:
from suds.bindings import binding
binding.envns=('SOAP-ENV', 'http://www.w3.org/2003/05/soap-envelope')
A partir daqui, tudo vai bem (com minha serviço, é isso)
Atualizando manualmente binding.py
Definitivamente não é o caminho certo a seguir. Você deve ser capaz de utilizar o ImportDoctor
para substituir suas ligações padrão. Dê uma olhada na documentação para Corrigindo esquemas quebrados no site da SUDS.
Além disso, quais versões de Python e SUDs você está usando?
Que tipo de token tem seu pedido de tomcat gerado?É Saml ou SiteMinder Token?O SharePoint possui um serviço de loja seguro que realmente entende o token baseado em reivindicações com base na Fundação Identidade do Windows.