Eu nunca usei SOAP antes e sou uma espécie de novato no Python. Estou fazendo isso para me familiarizar com as duas tecnologias. Instalei o SOAPlib e tentei ler a documentação do cliente , mas não a entendo muito bem. Existe algo mais que eu possa procurar que seja mais adequado para ser uma biblioteca de cliente SOAP para Python?
Edit: Caso isso ajude, estou usando o Python 2.6.
python
soap
soap-client
Damon
fonte
fonte
Respostas:
Atualização (2016):
Se você precisar apenas de um cliente SOAP, há uma biblioteca bem mantida chamada zeep . Ele suporta Python 2 e 3 :)
Atualizar:
Além do mencionado acima, consultarei a página PyServices WebServices , que está sempre atualizada com todos os módulos mantidos e recomendados ativamente para SOAP e todos os outros tipos de serviços Web.
Infelizmente, no momento, não acho que exista uma "melhor" biblioteca SOAP Python. Cada um dos principais disponíveis tem seus próprios prós e contras.
Bibliotecas mais antigas:
SOAPy : era o "melhor", mas não era mais mantido. Não funciona no Python 2.5 ou superior
ZSI : muito doloroso de usar e o desenvolvimento é lento. Possui um módulo chamado "SOAPpy", que é diferente de SOAPy (acima).
Bibliotecas "mais recentes":
SUDS : Muito Pythonic e fácil de criar clientes SOAP que consomem WSDL. Criar servidores SOAP é um pouco mais difícil. (Este pacote não funciona com Python3. Para Python3, consulte SUDS-py3)
SUDS-py3 : a versão Python3 do SUDS
spyne : Criar servidores é fácil, criar clientes um pouco mais desafiadores. Falta alguma documentação.
ladon : Criar servidores é muito parecido com o soaplib (usando um decorador). Ladon expõe mais interfaces que SOAP ao mesmo tempo, sem necessidade de código de usuário extra.
pysimplesoap : muito leve, mas útil para cliente e servidor - inclui uma integração de servidor web2py que acompanha o web2py.
Do exposto, eu apenas usei SUDS pessoalmente, e gostei muito.
fonte
urllib2
problema conhecido do Python . Veja minha resposta para mais detalhes.Eu segui o conselho de outras respostas a esta pergunta e tentei SUDS . Depois de usá-lo "com raiva", devo concordar: SUDS é muito bom! Altamente recomendado!
Ocorreu um problema ao chamar os serviços Web baseados em HTTPS por trás de um proxy. No momento da redação deste artigo, isso afeta todos os clientes de serviços da Web Python que usam
urllib2
, portanto, documentarei a solução aqui.O
urllib2
módulo fornecido com o python 2.6.2 e abaixo não emitirá umCONNECT
para o proxy para sessões de proxy HTTPS sobre HTTP. Isso resulta em um longo tempo limite ou, se você tiver sorte, um erro parecido com:Este foi issue1424152 sobre o rastreador de bug do Python. Existem correções anexadas ao relatório de erros que corrigem isso no Python 2.xe no Python 3.x. O problema já foi corrigido .
fonte
Tive uma boa experiência com SUDS https://fedorahosted.org/suds
Usaram o TestSuite como documentação.
fonte
pip install suds-jurko
SUDS é o caminho a percorrer, sem dúvida.
fonte
Apenas um aviso de FYI para pessoas que olham para SUDS, até que esse ticket seja resolvido, o SUDS não suporta a tag "choice" no WSDL:
https://fedorahosted.org/suds/ticket/342
veja: suds e tag de escolha
fonte
O SUDS é fácil de usar, mas não é garantido que seja reentrante. Se você estiver mantendo o objeto WSDL Client () em um aplicativo encadeado para obter melhor desempenho, há algum risco envolvido. A solução para esse risco, o método clone (), lança o bug irrecuperável do Python 5508, que parece imprimir, mas realmente não gera uma exceção. Pode ser confuso, mas funciona. Ainda é de longe o melhor cliente SOAP do Python.
fonte
Lançamos uma nova biblioteca: PySimpleSOAP , que fornece suporte para cliente / servidor simples e funcional. Seus objetivos são: facilidade de uso e flexibilidade (nenhuma classe, código gerado automaticamente ou xml é necessário), introspecção e geração de WSDL, conformidade com o padrão WS-I, compatibilidade (incluindo Java AXIS, .NET e Jboss WS). Ele está incluído no Web2Py para habilitar soluções de pilha completa (complementando outros protocolos suportados, como XML_RPC, JSON, AMF-RPC, etc.).
Se alguém está aprendendo SOAP ou deseja investigá-lo, acho que é uma boa opção para começar.
fonte
Acredito que o soaplib descontinuou seu cliente SOAP ('remetente') em favor da espuma. Neste ponto, o soaplib está focado em ser um servidor SOAP independente da estrutura da web ('receptor'). Atualmente, o soaplib está em desenvolvimento ativo e geralmente é discutido na lista de discussão do Python SOAP:
http://mail.python.org/mailman/listinfo/soap
fonte
Na minha conclusão, temos o seguinte:
Sabão do lado do cliente:
use apenas a espuma Suds-jurko (atualizada em 2016) é bem mantida e atualizada.ATUALIZAÇÃO 06/2017: a biblioteca suds-jurko não é atualizada e parece abandonada ,
Eu testei a biblioteca zeep , mas tenho limitações em torno dos tokens; agora, apenas suporte o UsernameToken, relato um bug para criar o token de carimbo de data e hora e o autor atualiza o código para corrigi-lo.
O Zeep começa bem e tem boa documentação , então eu migrei recentemente meu código do suds para o zeep e funciona bem.
Lado do servidor de sabão:Temos TGWS, soaplib (pysimplesoap não testado) e uso IMHO e ajuda o soaplib deve ser a escolha.Cumprimentos,
fonte
Como sugeri aqui , recomendo que você faça o seu próprio. Na verdade, não é tão difícil e suspeito que essa seja a razão de não haver melhores bibliotecas Python SOAP por aí.
fonte
espuma é muito bom. Eu tentei o SOAPpy, mas não o fiz funcionar da maneira que eu precisava, enquanto o suds funcionou praticamente imediatamente.
fonte
Isso poderia ajudar: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Descobri pesquisando
wsdl
epython
, de maneira racional, que você precisaria de uma descrição wsdl de um servidor SOAP para executar quaisquer wrappers de clientes úteis ...fonte
Usamos o SOAPpy do Python Web Services , mas parece que o ZSI (mesma fonte) está substituindo-o.
fonte
Estou usando SOAPpy com Python 2.5.3 em uma configuração de produção.
Eu tive que editar manualmente alguns arquivos no SOAPpy (algo sobre o código do cabeçalho estar no lugar errado), mas, além disso, funcionou e continua a fazê-lo com muita confiabilidade.
fonte