Хочу отправить SOAP-запрос в Python, но выдает ошибку:
TypeError: string indices must be integers, not 'str
'
Код:
def test():
wsdl_url = "http://блаблаблабла/?singleWsdl"
# structured XML
xml_data = '''<soapenv:Envelope xmlns:soapenv="http://блаблаблабл.xmlsoap.org/soap/envelope/" xmlns:obj="http://блаблаблабл/objects">
<soapenv:Header/>
<soapenv:Body>
<obj:GetOutgoingTrafficRequest>
<!--Optional:-->
<obj:parameter>
<!--Optional:-->
<obj:messageInfo>
<!--Optional:-->
<obj:type>outgoingTrafficRequest </obj:type>
<!--Optional:-->
<obj:version>1.1</obj:version>
<!--Optional:-->
<obj:messageID>блаблаблабл</obj:messageID>
<!--Optional:-->
<!--Optional:-->
<obj:senderID>101</obj:senderID>
<!--Optional:-->
<obj:senderName>блаблаблаблт</obj:senderName>
<!--Zero or more repetitions:-->
<obj:receiverID>201</obj:receiverID>
</obj:messageInfo>
</obj:parameter>
</obj:GetOutgoingTrafficRequest>
</soapenv:Body>
</soapenv:Envelope>'''
# Создаем объект Session для работы с заголовками
session = Session()
# Устанавливаем нужные заголовки
session.headers.update({
'Content-Type': 'text/xml; charset=utf-8;', 'SOAPAction': 'urn:GetOutgoingTraffic',
'Accept-Encoding': 'gzip,deflate', 'Content-Length': '1019', 'Host': 'блаблаблабл'
})
# Создаем объект клиента SOAP
client = zeep.Client(wsdl=wsdl_url, transport=Transport(session=Session()))
# Вызываем операцию GetCustomerData, передавая XML-данные
response = client.service.GetOutgoingTraffic(xml_data)
print(response)