Python处理HTTP响应状态码和错误

137 阅读2分钟

huake_00200_.jpg在Python中处理HTTP响应状态码和错误是进行网络编程时不可或缺的一部分。当你向服务器发送HTTP请求时,服务器会返回一个响应,其中包含了状态码、响应头和响应体。状态码是一个重要的指示器,用于告知客户端请求是否成功,以及失败的具体原因。

状态码的分类****

HTTP状态码被分为五类,分别由状态码的第一位数字表示:

· 1xx(信息性状态码) :表示请求已被接收,需要继续处理。

· 2xx(成功状态码) :表示请求已成功被服务器接收、理解、并接受。

· 3xx(重定向状态码) :表示需要客户端采取进一步的操作才能完成请求。

· 4xx(客户端错误状态码) :表示请求包含语法错误或无法完成请求。

· 5xx(服务器错误状态码) :表示服务器在处理请求的过程中发生了错误。

使用requests库处理状态码****

在Python中,requests库是一个流行的HTTP客户端库,它提供了简单的方法来发送HTTP请求并处理响应。当你发送一个请求后,可以通过response.status_code属性来获取HTTP状态码。

以下是一个处理HTTP响应状态码的示例:

python复制代码

 import requests
  
 url = 'example.com/api' 
  
 try:
 response = requests.get(url)
  
 # 根据状态码处理响应
 if response.status_code == 200:
 # 处理成功的响应
 print("请求成功,状态码:200")
 print(response.json()) # 假设响应体是JSON格式
 elif response.status_code == 404:
 # 处理未找到资源的错误
 print("请求失败,状态码:404,资源未找到")
 elif 500 <= response.status_code < 600:
 # 处理服务器错误
 print(f"服务器错误,状态码:{response.status_code}")
 else:
 # 处理其他类型的错误
 print(f"请求失败,状态码:{response.status_code}")
  
 except requests.RequestException as e:
 # 处理请求过程中发生的异常,如网络问题、无效的URL等
 print(f"请求发生异常:{e}")

在这个示例中,我们首先尝试发送一个GET请求到指定的URL。然后,我们根据响应的状态码进行不同的处理:

· 如果状态码是200,我们假设响应体是JSON格式,并打印出来。

· 如果状态码是404,我们打印一条消息表示资源未找到。

· 如果状态码在500到599之间,我们打印一条消息表示服务器错误。

· 对于其他状态码,我们也打印一条消息表示请求失败。

此外,我们还使用了一个try-except块来捕获requests.RequestException异常,这个异常会在请求过程中发生任何问题时被抛出,比如网络问题或无效的URL。

通过这种方式,你可以优雅地处理HTTP响应状态码和错误,并根据不同的情况采取不同的行动。