8.2 HTTP 请求与响应
HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,用于客户端与服务器之间的通信。Python 提供了多种工具和库来处理 HTTP 请求与响应,使得开发者能够轻松地与 Web 服务进行交互。本节将介绍如何使用 Python 发送 HTTP 请求、处理响应,并解析返回的数据。
8.2.1 HTTP 请求的基本概念
HTTP 请求由客户端发起,通常包括以下几个部分:
- 请求方法:常见的请求方法有
GET、POST、PUT、DELETE等,用于指定客户端希望执行的操作。 - 请求头:包含请求的元信息,如
User-Agent、Content-Type、Authorization等。 - 请求体:在
POST或PUT请求中,请求体通常包含客户端发送给服务器的数据。
8.2.2 使用 requests 库发送 HTTP 请求
Python 的 requests 库是处理 HTTP 请求的常用工具,它提供了简洁的 API 来发送各种类型的 HTTP 请求。
发送 GET 请求
import requests
# 发送 GET 请求
response = requests.get('https://api.example.com/data')
# 获取响应状态码
print(response.status_code)
# 获取响应内容
print(response.text)
发送 POST 请求
import requests
# 发送 POST 请求
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://api.example.com/submit', data=data)
# 获取响应状态码
print(response.status_code)
# 获取响应内容
print(response.json())
8.2.3 处理 HTTP 响应
HTTP 响应通常包括以下几个部分:
- 状态码:表示请求的处理结果,如
200表示成功,404表示资源未找到。 - 响应头:包含响应的元信息,如
Content-Type、Content-Length等。 - 响应体:包含服务器返回的数据,通常是 HTML、JSON 或二进制数据。
解析 JSON 响应
import requests
# 发送 GET 请求
response = requests.get('https://api.example.com/data')
# 解析 JSON 响应
data = response.json()
print(data)
处理响应头
import requests
# 发送 GET 请求
response = requests.get('https://api.example.com/data')
# 获取响应头
headers = response.headers
print(headers['Content-Type'])
8.2.4 处理异常与错误
在实际应用中,网络请求可能会遇到各种问题,如连接超时、服务器错误等。requests 库提供了异常处理机制来应对这些情况。
import requests
from requests.exceptions import RequestException
try:
response = requests.get('https://api.example.com/data', timeout=5)
response.raise_for_status() # 如果响应状态码不是 200,抛出异常
except RequestException as e:
print(f"请求失败: {e}")
8.2.5 使用 Session 保持会话
在某些情况下,客户端需要与服务器保持会话状态,如处理登录后的请求。requests 库提供了 Session 对象来管理会话。
import requests
# 创建 Session 对象
session = requests.Session()
# 登录
login_data = {'username': 'user', 'password': 'pass'}
session.post('https://api.example.com/login', data=login_data)
# 使用 Session 发送后续请求
response = session.get('https://api.example.com/protected')
print(response.text)
8.2.6 总结
通过本节的学习,您应该掌握了如何使用 Python 发送 HTTP 请求、处理响应,并处理常见的网络请求问题。requests 库是 Python 中处理 HTTP 请求的强大工具,熟练掌握它将极大地提升您在 Web 开发中的效率。
在下一节中,我们将介绍如何使用 Python 的 Web 框架(如 Flask 和 Django)来构建 Web 应用。
