2

httplib/http.client を使用して着信応答のエンコーディングを取得するにはどうすればよいですか?

getheaders() を使用して Content-Type の一部として見ることができますが、いくつかの異なる形式である可能性があり、httplib/http.client で特定のメソッドを使用することになっているため、それを解析するのは悪い習慣だと思います。代わりは:

>>> r = h.getresponse()
>>> r.getheaders()
[('transfer-encoding', 'chunked'), ('expires', 'Tue, 11 Oct 1988 22:00:00 GMT'), ('vary', 'Accept-Encoding'), ('server', 'nginx/1.2.6'), ('connection', 'keep-alive'), ('pragma', 'no-cache'), ('cache-control', 'no-cache, must-revalidate'), ('date', 'Thu, 18 Apr 2013 00:46:18 GMT'), ('content-type', 'text/html; charset=utf-8')]

受信エンコーディングを取得する最良の方法は何ですか?

4

1 に答える 1

0

直接的な答えではありませんが、これは役に立つかもしれません。リクエストライブラリを使用します。

人々が独自の http ライブラリの構築をやめたのには理由があります。実際、httplibはライブラリurllibを使用する use とさえ言っています。http次に、要求は urllib3 を使用します。

>>> import requests
>>> r = requests.get("http://bitbucket.org")
dir>>> dir(r)
['__bool__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'encoding', 'headers', 'history', 'iter_content', 'iter_lines', 'json', 'links', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']
>>> r.encoding
'utf-8'
于 2013-04-18T01:56:56.440 に答える