SOAP在python中解码未知的文档流响应

时间:2018-12-21 20:00:36

标签: python soap

对于我的一生,我无法弄清楚。

我向请求文档流的Web服务器创建了一个简单的肥皂请求。

我收到以下答复

Transfer-Encoding   chunked
#status#    HTTP/1.1 200 OK
Content-Language    en-US
Date    Fri, 11 Dec 2018 19:45:17 GMT
X-Powered-By    Servlet/3.0
Content-Type    text/xml; charset=UTF-8

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <a:RetrieveCompanyResponse xmlns:a="http://somewebservice.company.morecompany.com/">
            <documentStream>AF3xQEBAQEBAQEBAQEBA...</documentstream>
        <a:RetrieveCompanyResponse>
    </soap:Body>
</soap:Envelope>

documentStream包含的字符比显示的要多。

我了解我应该进行某种类型的base64解码,但是每次尝试获取如下所示的垃圾值时,都可以。

base64.decodestring('AF3xQEBAQEBAQEBAQEBA').decode('ISO-8859-1')
>>>  ]ñ@@@@@@@@@@@@

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好像我找到了答案。正如snakecharmerb所建议的,可能是由于它是旧文档格式。我通过进一步挖掘发现了格式。这里是一个示例代码,可以解释我的上述问题。

import base64
import codecs

tmp_str = b'AF3xQEBAQEBAQEBAQEBA'
# convert to base64 and then decode using IBM500
ascii_txt = codecs.decode(base64.b64decode(tmp_str), 'cp500')
utf8Str = ascii_txt.encode('utf-8')

print utf8Str

打印的字符串看起来像这样

 )1            

这里有对我有帮助的文件

https://docs.python.org/2/library/codecs.html#standard-encodings

希望这对某人有帮助。