web-dev-qa-db-ja.com

ステータスメッセージへのHTTPステータスコード

Pythonで、ステータスコードからHTTPメッセージを取得する方法を探しています。自分で辞書を作成するよりも良い方法はありますか?

何かのようなもの:

>>> print http.codemap[404]
'Not found'
8
Guy Markman

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]
9
abcdn

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}')
2
hi2meuk

この問題はPython 3.5以降で解決されました。現在Python httpライブラリには HTTPStatus というモジュールが組み込まれています。簡単に取得できます。ステータスコード、説明などのhttpステータスの詳細。これらは example コード HTTPStatus です。

1

404エラーは、ページが移動またはオフラインにされた可能性があることを示します。これは、存在しなかったページを指していることを示す400エラーとは異なります。

0
Samuel Dare