Get HTTP Error code from requests.exceptions.HTTPError

Question:

I am catching exceptions like this,

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.
Asked By: Shiplu Mokaddim

||

Answers:

The HTTPError carries the Response object with it:

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
Answered By: Lukasa

This is my code to get errors codes in HTTP

def tomcat_status(ip,port,url):
    try:
    # you can give your own url is
       r = urllib2.urlopen('http://'+ip+':'+port+'/'+url)
       return r.getcode()
     except urllib2.HTTPError as e:
       return e.code
    except urllib2.URLError as f:
       return 1
print tomcat_status(ip,tomcat_port,ping_url)
Answered By: Raj

If you need only status_code or message error. You can use this code:

try:
  [YOUR CODE]
except requests.exceptions.HTTPError as err:
  print(err.response.status_code)
  print(err.response.text)

Reference: Source code for requests.exceptions

Answered By: calraiden