Как я могу проанализировать сжатый XML-ответ?

#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. Нет гарантии, но, надеюсь, он просто обрабатывает сжатие для вас