我使用httplib.HTTPConnection
提交HTTP POST请求。我得到200响应状态,但响应数据看起来模糊不清。
当我在Firefox中提交请求时,响应显示正常。
conn = httplib.HTTPConnection("www.foo.com")
conn.request('POST', '/foo', postdata, headers)
resp = conn.getresponse()
conn.close()
print resp.read()
答案 0 :(得分:1)
如果响应是意外的“二进制”,请查看Content-Encoding标头。很可能你会得到压缩响应;它可以是gzip
或deflate
。
如果编码为gzip
,请使用以下代码对其进行解码:
import zlib
decompressor = zlib.decompressobj(16 + zlib.MAX_WBITS)
data = decompressor.decompress(response_body)
对于deflate
,您必须同时尝试使用默认压缩器和使用-zlib.MAX_WBITS
的压缩器:
try:
decompressor = zlib.decompressobj()
data = decompressor.decompress(response_body)
except zlib.error:
decompressor = zlib.decompressobj(-zlib.MAX_WBITS)
data = decompressor.decompress(response_body)
答案 1 :(得分:0)
除了其他答案之外,您可以通过将Accept-Encoding
标头设置为headers = {
# ...
"Accept-Encoding": "identity",
# ...
}
来禁用编码。
{{1}}