Pythonで、ステータスコードからHTTPメッセージを取得する方法を探しています。自分で辞書を作成するよりも良い方法はありますか?
何かのようなもの:
>>> print http.codemap[404]
'Not found'
Python 2.7では、 httplib モジュールに必要なものがあります:
>>> import httplib
>>> httplib.responses[400]
'Bad Request
定数も利用できます:
httplib.responses[httplib.NOT_FOUND]
httplib.responses[httplib.OK]
更新
@ shao.lo 以下に役立つコメントを追加しました。 http.client モジュールを使用できます。
# For Python 3 use
import http.client
http.client.responses[http.client.NOT_FOUND]
Python 3:
HTTPStatus()。phraseを使用して、特定のコード値の説明を取得できます。例えば。このような:
try:
response = opener.open(url,
except HTTPError as e:
print(f'In func my_open got HTTP {e.code} {HTTPStatus(e.code).phrase}')
たとえば、次のようになります。
In func my_open got HTTP 415 Unsupported Media Type
どちらが質問に答えます。ただし、HTTPError.reasonからはるかに直接的な解決策を得ることができます。
try:
response = opener.open(url, data)
except HTTPError as e:
print(f'In func my_open got HTTP {e.code} {e.reason}')
この問題はPython 3.5以降で解決されました。現在Python httpライブラリには HTTPStatus というモジュールが組み込まれています。簡単に取得できます。ステータスコード、説明などのhttpステータスの詳細。これらは example コード HTTPStatus です。
404エラーは、ページが移動またはオフラインにされた可能性があることを示します。これは、存在しなかったページを指していることを示す400エラーとは異なります。