8toni8
@8toni8

Пример SOAP клиента на Python?

Имеются SOAP запросы такого вида:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:GetVersion xmlns:NS1="urn:DCCIntf-IDCC">
      <user></user>			- имя пользователя
      <pass></pass>			- пароль пользователя
    </NS1:GetVersion>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Который каким то образом необходимо отправлять на адрес вида:
http://IP:Port/wsdl

Поделитесь примером как можно реализовать такой запрос посредством Python?

Или ссылкой на какие либо материалы по данному вопросу?
  • Вопрос задан
  • 8730 просмотров
Решения вопроса 1
qlkvg
@qlkvg
python backend developer
Если типов запросов не много и запросы не сложные, то имхо лучше сделать дубово
spoiler
import requests

user = "admin"
password = "password"
endpoint = "http://soap.endpoint"

login_template = """
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:GetVersion xmlns:NS1="urn:DCCIntf-IDCC">
      <user>{user}</user>			
      <pass>{pass}</pass>			
    </NS1:GetVersion>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
"""
body = body.format(user=user, pass=password)
body = body.encode('utf-8')

session = requests.session()
session.headers = {"Content-Type": "text/xml; charset=utf-8"}
session.headers.update({"Content-Length": str(len(body))})
response = session.post(url=endpoint, data=body, verify=False)


Сам недавно пол дня пытался подружить zeep и suds с одним специфическим АПИ, в итоге плюнул и за оставшиеся пол дня сделал все на голых реквестах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yanchick
@yanchick
Программист и учёный из сурового города
Ключевая идея SOAP это в том что спека отдается по урлу с wsdl. Там и функции, и параметры и их типы. Если стоит задачка порзмять мозг, то можно клиент написать самому и повысить скил на питон. Но для продакшена самому писать клиент, ну по меньшей мере не разумно. А пример готового https://github.com/mvantellingen/python-zeep.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы