existem Que bibliotecas de cliente SOAP para Python, e onde está a documentação para eles? [fechadas]

StackOverflow https://stackoverflow.com/questions/206154

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu nunca usei sabão antes e eu sou uma espécie de novo para Python. Estou fazendo isso para me familiarizar com ambas as tecnologias. Eu instalei SOAPlib e eu tentei ler a sua documentação do cliente , mas eu não entendo muito bem. É outra coisa lá algo que eu possa olhar para o que é mais adequado para ser uma biblioteca cliente SOAP para Python?

Edit:. Apenas no caso de ajuda, estou usando o Python 2.6

Foi útil?

Solução

Update (2016):

biblioteca Se você só precisa de cliente SOAP, não está bem conservado chamado zeep . Ele suporta tanto Python 2 e 3:)


Atualização:

Adicionalmente ao que está mencionado acima, vou me referir a Python WebServices página que é sempre up-to-date com todos os módulos mantido ativamente e recomendados para tipos SABÃO e todos os outros webservice.


Infelizmente, no momento, eu não acho que há uma "melhor" biblioteca Python SOAP. Cada um dos mais tradicionais disponíveis tem suas próprias vantagens e desvantagens.

bibliotecas mais antigas:

  • ensaboada : era o "melhor", mas não é mantida. Não funciona em Python 2.5 +

  • ZSI : Muito doloroso para usar, e desenvolvimento é lento. Tem um módulo chamado "SOAPpy", que é diferente do que com sabão (acima).

bibliotecas "mais recente":

  • SUDS : Muito Pythonic, e fácil de criar clientes SOAP-consuming WSDL. Criando servidores SOAP é um pouco mais difícil. (Este pacote não funciona com Python3. Para Python3 ver SUDS-PY3)

  • SUDS-PY3 : Versão A Python3 de SUDS

  • spyne : Criando servidores é fácil, criação de clientes um pouco mais desafiador. Documentação é um pouco carente.

  • ladon : Criando servidores é muito parecido em soaplib (usando um decorador). Ladon expõe mais interfaces do que o sabão, ao mesmo tempo, sem o código do usuário extra necessário.

  • pysimplesoap : muito leve, mas útil para o cliente e servidor - inclui um integração do servidor web2py que vem com o web2py.

  • SOAPpy : Diferentemente do SOAPpy abandonada que está hospedado no link ZSI acima, esta versão foi realmente mantida até 2011, agora parece ser abandonada também.
  • soaplib : fácil de usar biblioteca python para escrever e chamando serviços web de sabão. Webservices escritos com soaplib são simples, leve, trabalhar bem com outras implementações de SOAP, e pode ser implantado como aplicações WSGI.
  • osa :. Um rápido / magro fácil de usar sabão biblioteca cliente Python

Do acima, eu só SUDS usado pessoalmente, e eu gostei muito.

Outras dicas

Eu segui o conselho de outras respostas a esta pergunta e deu SUDS uma tentativa. Após usá-lo "com raiva" Devo concordar: SUDS é muito bom! Altamente recomendado!

I fez para serviços web chamado problemas baseados em HTTPS por trás de um proxy. No momento da redação deste artigo, isso afeta todas clientes de serviços web Python que o uso urllib2, então eu vou documentar a solução aqui.

O módulo urllib2 transporte com python 2.6.2 e abaixo não irá emitir um CONNECT para o proxy para sessões HTTPS-over-http-proxy. Isso resulta em um longo tempo de espera, ou se você tiver sorte, um erro que se parece com:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Este foi issue1424152 sobre o rastreador de bug do Python. Há manchas anexados ao relatório de bug que irá corrigir isso em Python 2.x e Python 3.x. A questão já está fixado .

Eu tive uma boa experiência com SUDS https://fedorahosted.org/suds

Usado sua TestSuite como documentação.

SUDS é o caminho a percorrer, não há dúvida sobre isso.

Apenas um FYI aviso para as pessoas olhando para SUDS, até que o bilhete for resolvido, SUDS não suporta a tag "escolha" em WSDL:

https://fedorahosted.org/suds/ticket/342

ver: espuma e escolha tag

SUDS é fácil de usar, mas não é garantido para ser re-entrantes. Se você está mantendo o objeto WSDL Cliente () em torno de um aplicativo de rosca para um melhor desempenho, há algum risco envolvido. A solução para este risco, o método clone (), lança o irrecuperável Python 5508 bug, que parece imprimir mas não realmente lançar uma exceção. Pode ser confuso, mas funciona. Ele ainda é, de longe, o melhor cliente Python SOAP.

Nós lançamos uma nova biblioteca: PySimpleSOAP , que fornece suporte para simples e funcional cliente /servidor. Ele objetivos são: a facilidade de uso e flexibilidade (sem aulas, é necessário código gerado automaticamente ou xml), a introspecção WSDL e geração, WS-I conformidade com o padrão, a compatibilidade (incluindo Java AXIS, .NET e JBoss WS). É incluído em web2py para permitir soluções de pilha completa (complementando outros protocolos suportados, tais como XML_RPC, JSON, AMF-RPC, etc.).

Se alguém está aprendendo SOAP ou querer investigar isso, eu acho que é uma boa escolha para começar.

Acredito que soaplib tem depreciado seu cliente SOAP ( 'emissor') em favor de espuma. Neste ponto soaplib está focada em ser um servidor SOAP agnóstico framework web ( 'receptor'). Atualmente soaplib está em desenvolvimento ativo e normalmente é discutido na lista de discussão Python SABÃO:

http://mail.python.org/mailman/listinfo/soap

Como sugeri aqui eu recomendo que você rolar o seu próprio. Na verdade não é tão difícil e eu suspeito que é a razão não são melhores bibliotecas SABÃO Python lá fora.

espuma é muito bom. Tentei SOAPpy mas não fazê-lo funcionar exatamente da maneira que eu precisava enquanto espuma trabalhou bastante imediatamente.

Em minha conclusão temos o seguinte:

lado do cliente Soap:

uso única Suds-Jurko ( atualizados 2016) espuma é bem mantido e atualizado.

Atualização 06/2017: espuma-Jurko biblioteca não é atualizado e aparentemente abandonado ,

Eu testei zeep biblioteca, mas tem limitações em torno de tokens, por agora basta apoiar UsernameToken, i relatar um bug para criar timestamp atualização token e autor do código para corrigi-lo.

Zeep começar bom e tem boa documentação , então eu recentemente migrou meu código de espuma para zeep e funciona bem.

lado do servidor Soap:

Temos TGWS, soaplib (pysimplesoap não testado) uso IMHO e ajuda soaplib deve ser a escolha.

Com os melhores cumprimentos,

Será que esta ajuda: http: //users.skynet .be / pascalbotte / rcx-ws-doc / python.htm # SOAPpy

Eu achei procurando por wsdl e python, com o ser racional, que você precisaria de uma descrição WSDL de um servidor SOAP para fazer qualquer útil wrappers cliente ....

Nós tínhamos usado SOAPpy de Python Web Services , mas parece que ZSI (mesma fonte) é substituí-lo.

Im usando SOAPpy com Python 2.5.3 em um ambiente de produção.

Eu tive que editar manualmente um par de arquivos em SOAPpy (algo sobre o código de cabeçalho estar no lugar errado), mas diferente do que ele trabalhou e continua a fazê-lo de forma muito confiável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top