我得到了作为字符串的整个 HTTP 响应,但我只想提取正文。
我不想使用外部库或重新实现 header 解析。
Content-Type: text/xml
Content-Length: 129
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodResponse>
</code>
更新:如果不是很明显,我确实从 URL 以外的其他来源获取数据,因此任何尝试使用需要 URL 的东西都是无用的。
我仍然从像对象 data = stream.read()
这样的流中读取数据,所以可以使用流的解决方案也是可以接受的。
第二次更新,是的,这是一个 XMLRPC 响应,但我正在使用不同的传输方式,所以我不能使用 httplib 来解析它,主要是因为 httplib 已损坏并且不接受字符串或用于解析的流。
第三次更新,双换行符可以是\r\n\r\n
或\n\n
,具体取决于服务器。
所以要明确一点:输入是一个应该包含 XMLRPC 响应的 HTTP 响应,输出必须是响应
。它不必解析 XML,但必须能够从响应中正确提取 XML。
最佳答案
基于 Michal 解决方案,但此解决方案包括基本修复:
def strip_http_headers(http_reply):
p = http_reply.find('\r\n\r\n')
if p >= 0:
return http_reply[p+4:]
return http_reply
关于python - 如何在 Python 中从包含整个响应的字符串中获取 http 响应的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474745/