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

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

状态码的分类

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

  • 1xx(信息性状态码):表示请求已被接收,需要继续处理。
  • 2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。
  • 3xx(重定向状态码):表示需要客户端采取进一步的操作才能完成请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成请求。
  • 5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。

使用requests库处理状态码

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

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

python复制代码

import requests

url = 'http://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响应状态码和错误,并根据不同的情况采取不同的行动。

猜你喜欢

转载自blog.csdn.net/weixin_73725158/article/details/143424436