你可以简单地调用Response.raise_for_status()
您的回应:
>>> import requests
>>> url = 'http://stackoverflow.com/doesnt-exist'
>>> r = requests.get(url)
>>>
>>> print r.status_code
404
>>> r.raise_for_status()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "requests/models.py", line 831, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found
这将提高一个requests.HTTPError
任何4xx
或5xx
响应。
有关更完整的示例,请参阅Response Status Code上的文档。
注意这并不你究竟问了什么(status != 200
):它不会引发异常的201 Created
或204 No Content
,或任何3xx
的重定向 - 但是这是最有可能你想要的行为:requests
只会跟随重定向,而其他2xx
通常只是在处理API时就好了。