Кто может подсказать, каким образом, используя модуль suds, можно отправить soap-запрос.
from suds.client import Client
url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl'
client = Client(url)
result = client.service.getPercentBodyFat('jeff', 68, 170)
print result
Наверное, я невнятно объяснил суть моей проблемы.
Я хочу сделать скрипт, который будет проверять несколько wsdl’ей.
И если wsdl доступна, то сделать запрос по какому-нибудь методу.
Но методы у этих wsdl’ей разные, т.е. использовать
result = client.service.getPercentBodyFat('jeff', 68, 170)
не вариант.
Есть ли какие-то изящное решение, кроме как городить кучу if’ов?
Так же, есть еще такой вопрос, можно ли через suds, получить status code? Как это сделано в модуле request
response = requests.get(url)
print(response.status_code)
Ну создаете клиент suds, если он не бросает эксепшин при инициализации, то wsdl доступен.
Далее вам нужно посмотреть все методы доступные через wsdl
print client
Suds - version: 0.3.3 build: (beta) R397-20081121
Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"
Prefixes (1):
ns0 = "http://test.server.enterprise.rhq.org/"
Ports (1):
(Soap)
Methods:
addPerson(Person person, )
echo(xs:string arg0, )
getList(xs:string str, xs:int length, )
getPercentBodyFat(xs:string name, xs:int height, xs:int weight)
getPersonByName(Name name, )
hello()
testExceptions()
testListArg(xs:string[] list, )
testVoid()
updatePerson(AnotherPerson person, name name, )
Types (23):
Person
Name
Phone
AnotherPerson
Далее по найденному методу нужно формировать запрос. Если запрос простой, то можно передавать данные через параметры. А если нужно какие-то сложно-компонованные элементы сделать тогда нужно использовать factory
name = client.factory.create('Person.Name')
https://fedorahosted.org/suds/wiki/Documentation#FACTORY
https://jortel.fedorapeople.org/suds/doc/suds.client.Factory-class.html