从requests.exceptions.HTTPError获取HTTP错误代码

Shi*_*dim 36 python exception http python-requests

我抓住这样的例外,

def get_url_fp(image_url, request_kwargs=None):
    response = requests.get(some_url, **request_kwargs)
    response.raise_for_status()
    return response.raw


try:
   a = "http://example.com"
   fp = get_url_fp(a)

except HTTPError as e:
    # Need to check its an 404, 503, 500, 403 etc.
Run Code Online (Sandbox Code Playgroud)

Luk*_*asa 70

HTTPError携带Response用它目的:

def get_url_fp(image_url, request_kwargs=None):
    response = requests.get(some_url, **request_kwargs)
    response.raise_for_status()
    return response.raw


try:
    a = "http://example.com"
    fp = get_url_fp(a)

except HTTPError as e:
    # Need to check its an 404, 503, 500, 403 etc.
    status_code = e.response.status_code
Run Code Online (Sandbox Code Playgroud)

  • 这里的关键之一是您还需要调用response.raise_for_status()。参考此处:http://docs.python-requests.org/en/latest/user/quickstart/#response-status-codes (7认同)

Cla*_*ira 8

如果您只需要 status_code 或消息错误。您可以使用此代码:

try:
  [YOUR CODE]
except requests.exceptions.HTTPError as err:
  print(err.response.status_code)
  print(err.response.text)
Run Code Online (Sandbox Code Playgroud)

参考:requests.exceptions的源代码