Como faço para criar um tipo não-padrão com SOAPpy?
-
02-07-2019 - |
Pergunta
Eu estou chamando um WSDL serviço web de Python usando SOAPpy . A chamada que eu preciso fazer é o método Auth_login . Isso tem 2 argumentos - o primeiro, uma string é a chave API; o segundo, um tipo personalizado que contém nome de usuário e senha . O tipo personalizado é chamado Auth_credentialsData que contém 2 valores como picadas - um para o nome de usuário e uma para a senha. Como posso criar este tipo personalizado usando SOAPpy? Eu tentei passar uma lista e um dicionário, nenhum dos quais trabalho.
código até agora:
from SOAPpy import WSDL
wsdlUrl = 'https://ws.pingdom.com/soap/PingdomAPI.wsdl'
client = WSDL.Proxy(wsdlUrl)
Tentei ambos:
credentials = ['email@example.com', 'password']
client.Auth_login('key', credentials)
e
credentials = {'username': 'email@example.com', 'password': 'passsword'}
client.Auth_login('key', credentials)
sendo que ambos dão uma autenticação de erro falhou.
Solução
O melhor método é usar o módulo de sabão ZSI que lhe permite tomar um arquivo WDSL e transformá-lo em classes e métodos que você pode usar para chamá-lo. A documentação on-line é em seu site mas a documentação mais recente é mais facilmente encontrada na fonte pacote. Se você instalar no Debian / Ubuntu (nome do pacote python-ZSI) a documentação está em / usr / share / doc / python-ZSI em um par de PDFs pode encontrar lá dentro.