Я уверен, что я делаю все это неправильно, так как я ничего не знаю о Xml или SOAP, но я пытаюсь отправлять запросы SOAP с использованием Python request.post ().Я подумал, что могу просто передать тело в виде простого текста.Если я использую data=body
, я получаю ошибку декодирования, говоря, что Latin-1 не может быть использован, хотя я думал, что я поставил декодирование для utf-8
.Если я использую params=body
запрос успешен, но он говорит, что у меня есть недопустимый элемент Root.Как мне разобрать следующий XML-документ?Я просто пытаюсь передать процесс аутентификации в соответствии с этими инструкциями: https://developer.stamps.com/developer/docs/swsimv71.html#authentication
Здесь находится элемент xml Tree: https://swsim.testing.stamps.com/swsim/swsimv71.asmx?wsdl
Я использовал следующий код для попытки отправки запроса наотправить мои учетные данные для аутентификации.Если бы вы могли сообщить мне, где и как сильно я испорчу этот запрос, я был бы признателен.
url = "https://swsim.testing.stamps.com/swsim/swsimv71.asmx"
headers = {
'User-Agent': 'Crosscheck Networks SOAPSonar',
'content-type': 'text/xml',
'charset': 'utf-8'
}
body = """
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns=“http://stamps.com/xml/namespace/2018/03/swsim/swsimv71”
>
<soap:Body>
<AuthenticateUser>
<tns:Credentials>
<IntegrationsID>
ID
</IntegrationsID>
<Username>
USERNAME
</Username>
<Password>
PASSWORD
</Password>
</tns:Credentials>
</AuthenticateUser>
</soap:Body>
</soap:Envelope>
"""
r = requests.post(url, headers=headers, params=body)
print(r.content)