简要
Response
对象是 urllib3
中的核心组件之一,它代表了一个 HTTP 响应。你可以使用 Response
对象来获取 HTTP 状态码、响应头和响应体等信息。
架构
在 urllib3
中,Response
类封装了从服务器接收到的响应数据。它通常由 PoolManager
或 ConnectionPool
的 request
方法返回。Response
类的主要属性包括:
status
: HTTP 状态码(如 200、404 等)。data
: 响应体,通常是字节字符串。headers
: 响应头,一个字典。reason
: 状态码的文本描述。url
: 响应对应的请求 URL。effective_url
: 实际请求的 URL(可能包含重定向后的 URL)。pool
: 生成此响应的连接池。
内容
使用 Response
对象,你可以轻松地访问和处理 HTTP 响应。以下是一个简单的例子:
import urllib3
http = urllib3.PoolManager()
# 发送请求并获取响应
resp = http.request('GET', 'http://example.com')
# 打印状态码和响应体
print(resp.status)
print(resp.data)
代码案例
以下是一个使用 urllib3
的 Response
对象处理 HTTP 响应的示例:
import urllib3
# 创建一个 PoolManager 实例
http = urllib3.PoolManager()
# 发送 GET 请求
resp = http.request('GET', 'http://httpbin.org/get')
# 打印状态码
print("Status:", resp.status)
# 打印响应头
print("Headers:", resp.headers)
# 打印响应体
print("Body:")
print(resp.data.decode('utf-8')) # 将字节字符串解码为文本
在这个例子中,我们发送了一个 GET 请求到 http://httpbin.org/get
,然后打印了状态码、响应头和响应体。注意,我们使用 decode('utf-8')
方法将响应体从字节字符串转换为文本字符串,因为 resp.data
返回的是字节类型。
希望这个解释能帮助你更好地理解 urllib3
中的 Response
对象。