Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python HTTP状态代码到状态消息_Python_Http_Http Status Codes - Fatal编程技术网

Python HTTP状态代码到状态消息

Python HTTP状态代码到状态消息,python,http,http-status-codes,Python,Http,Http Status Codes,我正在寻找一种用Python从状态代码中获取HTTP消息的方法。有没有一种方法比自己编写字典更好 比如: >>> print http.codemap[404] 'Not found' 在Python 2.7中,模块具有您需要的功能: >>> import httplib >>> httplib.responses[400] 'Bad Request 常数也可用: httplib.responses[httplib.NOT_FOUND]

我正在寻找一种用Python从状态代码中获取HTTP消息的方法。有没有一种方法比自己编写字典更好

比如:

>>> print http.codemap[404]
'Not found'
在Python 2.7中,模块具有您需要的功能:

>>> import httplib
>>> httplib.responses[400]
'Bad Request
常数也可用:

httplib.responses[httplib.NOT_FOUND]
httplib.responses[httplib.OK]
更新

在下面添加了一条有用的评论。该模块可用于:

# For Python 3 use
import http.client
http.client.responses[http.client.NOT_FOUND]

404错误表示页面可能已被移动或脱机。它不同于400错误,400错误表示指向从未存在过的页面。

此问题在Python 3.5以后的版本中解决。现在,Python http库有一个内置模块,名为。您可以轻松获取http状态详细信息,如状态代码、描述等。这些是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获得更直接的解决方案。原因:

try:
    response = opener.open(url, data)
except HTTPError as e:
    print(f'In func my_open got HTTP {e.code} {e.reason}')

我更改了python3的message-use
import http.client
http.client.responses[http.client.NOT\u FOUND]
@JSTL,但这个答案给出了用法示例。