2013-10-13 63 views
26

我趕上這樣的例外,獲取HTTP錯誤代碼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

也許這個帖子將有所幫助:http://stackoverflow.com/a/16206247/1461780 –

回答

46

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

這裏的關鍵之一是你還需要調用response.raise_for_status()。請參考此處:http://docs.python-requests.org/en/latest/user/quickstart/#response-status-codes – nommer

-1

這是我的代碼來獲取錯誤代碼在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

OP是關於使用Requests包的具體內容。你的答案是使用urllib2。雖然它在技術上可能是準確的,並且代表了做某件事情的另一種方式,但在這種情況下並沒有幫助。它也似乎格式不正確。 –

+0

這只是獲取狀態碼的另一種方法,因爲在python中,request和urllib都是默認的,所以我們可以使用它們中的任何一個。 – Raj