Python-запросы и SOAP - PullRequest
       19

Python-запросы и SOAP

0 голосов
/ 06 марта 2019

Как можно было бы отправить следующий пример SOAP-запроса с использованием запросов python или другого модуля python? (Источник: https://www.w3schools.com/xml/xml_soap.asp)

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Моя попытка

import requests
url = "www.example.org/InStock"
auth = ('username', 'password')
request = """ <?xml version="1.0"?>
                <soap:Envelope
                xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
                 soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

                 <soap:Body xmlns:m="http://www.example.org/stock">
                <m:GetStockPrice>
                <m:StockName>IBM</m:StockName>
                </m:GetStockPrice>
                </soap:Body>

                </soap:Envelope> """

encoded_request = request.encode('utf-8')
headers = {"Content-Type": "application/soap+xml; charset=utf-8",
           "Content-Length": str(len(encoded_request))}
response = requests.post(url,headers = headers,data = encoded_request)

Это правильный URL (составленный из доступной информации) и правильный способ аутентификации в SOAP? Или мне нужно передать логин и пароль в мыльном конверте?

Я использую этот ответ для справки: Отправка SOAP-запроса с использованием Python-запросов

...