Доброго времени суток!
Являюсь новичком в Python. Стоит задача сделать запрос к web сервису по протоколу soap: т.е. отправить xml запрос с параметрами, и получить ответ. На тестовом сервере на Win2003 удалось это реализовать - запрос отправил - ответ получил (запускаю скрипт и получаю данные в cmd).
Но!!! Когда переношу это на сервер с Win2016 абсолютно ничего не меняя в коде(версия python та же), то получаю такую ошибку
Traceback (most recent call last):
File "etran21.py", line 41, in <module>
print(response.content.decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 197: invalid continuation byte
Код скрипта:
Логин пользователя - логин на русском языке (как мне кажется именно в нем проблема), password - пароль на английском.
Подскажите, пожалуйста, в чем проблема? Пробовал разные кодировки, перелопатил (как мне кажется), весь инет - но ответа не нашел...
Являюсь новичком в Python. Стоит задача сделать запрос к web сервису по протоколу soap: т.е. отправить xml запрос с параметрами, и получить ответ. На тестовом сервере на Win2003 удалось это реализовать - запрос отправил - ответ получил (запускаю скрипт и получаю данные в cmd).
Но!!! Когда переношу это на сервер с Win2016 абсолютно ничего не меняя в коде(версия python та же), то получаю такую ошибку
Traceback (most recent call last):
File "etran21.py", line 41, in <module>
print(response.content.decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 197: invalid continuation byte
Код скрипта:
Python:
import requests
nomvag = [29136330,29136348,29136355,29136363]
endpoint = "http://адрес сервиса"
for nomvags in nomvag:
body="""
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="SysEtranInt">
<soapenv:Header/>
<soapenv:Body>
<sys:GetBlock soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<Login xsi:type="xsd:string">Логин пользователя</Login>
<Password xsi:type="xsd:string">password</Password>
<Text xsi:type="xsd:string">
<GetInform><ns0:getReference21ASU xmlns:ns0="http://service.siw.pktbcki.rzd/">
<ns0:Reference21ASURequest>
<idUser>0</idUser>
<idReference>21</idReference>
<vagons>
<vagon>"""+(str(nomvags))+"""</vagon>
</vagons>
</ns0:Reference21ASURequest>
</ns0:getReference21ASU>
</GetInform>
</Text>
</sys:GetBlock>
</soapenv:Body>
</soapenv:Envelope>
"""
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)
print(response.content.decode('utf-8'))
Логин пользователя - логин на русском языке (как мне кажется именно в нем проблема), password - пароль на английском.
Подскажите, пожалуйста, в чем проблема? Пробовал разные кодировки, перелопатил (как мне кажется), весь инет - но ответа не нашел...