在Python Requests中获取状态码描述
我想要输入一个服务器的响应代码,然后让Requests告诉我这个代码是什么意思。例如,代码200就表示“正常”。
我找到了一段链接,里面有源代码,它展示了这些代码和描述的字典结构。我看到Requests会根据给定的描述返回一个响应代码:
print requests.codes.processing # returns 102
print requests.codes.ok # returns 200
print requests.codes.not_found # returns 404
但反过来就不行了:
print requests.codes[200] # returns None
print requests.codes.viewkeys() # returns dict_keys([])
print requests.codes.keys() # returns []
我以为这应该是个简单的任务,但在网上搜索或者在文档中都找不到答案。
5 个回答
-1
requests.status_codes.codes.OK
这个用起来很不错,让我的应用代码更容易读懂。
注意,在源代码中:requests.status_codes.codes 是一种叫做 LookupDict 的类型,它重写了getitem这个方法。
你可以通过运行 dir(requests.status_codes.codes)
来查看所有支持的键。
当与FLASK一起使用时:
我喜欢使用来自flask-api插件的以下枚举:from flask_api import status
,这样我可以得到更详细的HTTP状态码,比如:
status.HTTP_200_OK
2
在Python 3.x中,这段代码可以正常运行
>>> from http import HTTPStatus
>>> HTTPStatus(200).phrase
'OK'
20
我之前也遇到过同样的问题,找到了解决办法,具体可以参考这个问题
简单来说:
responsedata.status_code
- 这个可以给你一个整数的状态码responsedata.reason
- 这个可以给你状态码的文字说明
30
一种可能性是:
>>> import requests
>>> requests.status_codes._codes[200]
('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '\xe2\x9c\x93')
元组中的第一个值被用作常规的代码键。
66
另外,如果你在使用 Python 2.x 版本,可以使用 httplib.responses
这个功能:
>>> import httplib
>>> httplib.responses[200]
'OK'
>>> httplib.responses[404]
'Not Found'
而如果你在使用 Python 3.x 版本,就要用 http
模块:
In [1]: from http.client import responses
In [2]: responses[200]
Out[2]: 'OK'
In [3]: responses[404]
Out[3]: 'Not Found'