2013-10-13 4 views
26

I Ausnahmen wie dies am Fang,Get HTTP-Fehlercode aus requests.exceptions.HTTPError

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. 
+0

Vielleicht wäre dieser Beitrag hilfreich: http://stackoverflow.com/a/16206247/1461780 –

Antwort

46

Die HTTPError trägt das Response Objekt mit sich:

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 
+0

einer der Schlüssel hier ist, müssen Sie auch response.raise_for_status() aufrufen. Referenz hier: http://docs.python-requests.org/en/latest/user/quickstart/#response-status-codes – nommer

-1

Dies ist mein Code Fehler zu bekommen 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) 
+0

Das OP war spezifisch über die Verwendung des Requests-Pakets. Ihre Antwort verwendet urllib2. Obwohl es technisch korrekt ist und eine alternative Möglichkeit darstellt, etwas zu tun, ist es in diesem Zusammenhang nicht hilfreich. Es scheint auch schlecht formatiert zu sein. –

+0

Dies ist nur eine weitere Alternative, um den Statuscode zu erhalten, da sowohl die Anfrage als auch die URL in Python voreingestellt sind, können wir beide verwenden. – Raj