#python #xml #soap #python-requests
#python #xml #soap #python-запросы
Вопрос:
Я пытаюсь проанализировать XML-ответ, и в некоторых случаях он упоминает, что он сжат <IsCompressed>True</IsCompressed>
.
Ниже приведен пример:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetDataResponse xmlns="http://example.com/">
<GetDataResult>
<Data>base64Binary</Data>
<IsCompressed>boolean</IsCompressed>
<IsEncrypted>boolean</IsEncrypted>
<ErrorDescr>string</ErrorDescr>
</GetDataResult>
</GetDataResponse>
</soap:Body>
</soap:Envelope>
Если ответ не сжат, я делаю следующее:
import requests
from bs4 import BeautifulSoup
import base64
# After making the request
response_content = request.content
soup = BeautifulSoup(response_content, "xml")
data = soup.find("soap:Envelope").GetDataResponse.GetDataResult.Data.text
base64_bytes = base64_message.encode(encoding)
message_bytes = base64.b64decode(base64_bytes)
message = message_bytes.decode(encoding)
Это заголовки ответа:
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By-Plesk: PleskWin
Date: Sat, 07 Nov 2020 07:58:49 GMT
Content-Length: 3817
Я пытался найти, какой тип сжатия используется, но пока не смог.
Комментарии:
1. Рассматривали ли вы возможность использования реального SOAP-клиента? docs.python-zeep.org/en/master
2. @OneCricketeer Это очень полезный комментарий. Спасибо.
3. Нет гарантии, но, надеюсь, он просто обрабатывает сжатие для вас