2015-01-28 2 views
-2

httplib.HTTPConnection을 사용하여 HTTP POST 요청을 제출합니다. 응답 상태는 200이지만 응답 데이터가 흐릿하게 보입니다. Firefox에서 요청을 제출하면 응답이 잘 표시됩니다.HTTP 응답 본문이 난독 화됩니다.

conn = httplib.HTTPConnection("www.foo.com") 
conn.request('POST', '/foo', postdata, headers) 
resp = conn.getresponse() 
conn.close() 
print resp.read() 
+0

헤더를 보셨습니까? 아마도 당신은 압축 된 * 응답을 받았습니까? 'Content-Encoding' 헤더가 있습니까? –

+1

어쨌든 우리는 당신이 가진 응답을 볼 수 없으므로 우리는 당신을 도울 수 없습니다. –

+0

@MartijnPieters 예. 그것은 gzip되었습니다. 고마워요 – user193661

답변

1

예기치 않게 응답이 '바이너리'인 경우 Content-Encoding 헤더를 확인하십시오. 대부분 압축 된 응답을 받고 있습니다. gzip 또는 deflate 일 수 있습니다. -zlib.MAX_WBITS와 기본 압축기와 하나 모두를 시도

import zlib 

decompressor = zlib.decompressobj(16 + zlib.MAX_WBITS) 
data = decompressor.decompress(response_body) 

deflate를 들어, 당신이 가진 것 : 인코딩이 gzip 당신 경우

은, 그것을 디코딩

또한
try: 
    decompressor = zlib.decompressobj() 
    data = decompressor.decompress(response_body) 
except zlib.error: 
    decompressor = zlib.decompressobj(-zlib.MAX_WBITS) 
    data = decompressor.decompress(response_body) 
0

에 다른 대답은 아마도 Accept-Encoding 헤더를 identity으로 설정하여 인코딩을 비활성화 할 수 있습니다.

headers = { 
    # ... 
    "Accept-Encoding": "identity", 
    # ... 
} 
관련 문제