requests.adapters.BaseAdapter类
BaseAdapter 类则是该库中用于处理请求和响应的适配器的基类。
用户可以继承该类并自定义自己的方法来覆写它。
1、close()
close() 方法主要用于清理或完成适配器相关的操作。
当一个 Session 对象被关闭或超出范围时,会自动调用已挂载适配器的 close() 方法。
2、send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)
send() 方法负责实际发送请求,并返回相应的响应对象。
可以根据需要在自定义适配器中覆盖该方法,以实现特定的请求发送逻辑。
参数:
request:PreparedRequest对象
stream: 如果为 True,则返回响应的内容不会立即下载。默认为 False。
timeout: 请求的超时时间,可以是一个数字或一个包含两个元素的元组(连接超时和读取超时)。
verify: 是否进行 SSL 证书验证。默认为 True。
cert: 客户端证书文件路径。可以是单个文件(包括密钥和证书)或包含两个文件路径的元组。
proxies: 代理配置。
示例:
from requests.adapters import BaseAdapter
class MyCustomAdapter(BaseAdapter):
def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
# 实现自定义的请求发送逻辑
# ...
# 使用自定义适配器的会话:
import requests
session = requests.Session()
session.mount('http://', MyCustomAdapter())
session.mount('https://', MyCustomAdapter())
# 发送请求
response = session.get('https://example.com')
# 处理响应
print(response.text)
# 注意:上述示例中的 MyCustomAdapter 类需要根据具体需求实现自定义的请求发送逻辑。
requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)
requests.adapters.HTTPAdapter 类的作用在于提供了一个灵活的机制,允许用户创建和使用自己的传输适配器,实现自己需要的特殊功能,让用户能够更好地控制和管理 HTTP 和 HTTPS 请求的发送,并能够实现一些特殊的交互功能。
urllib3的内置HTTP适配器。
通过实现传输适配器接口,为请求会话提供通用情况接口,以联系HTTP和HTTPS url。这个类通常由Session类在后台创建。
参数:
- pool_connections: 连接池的最大连接数。
- pool_maxsize: 每个主机的最大连接数。
- max_retries: 最大重试次数,设置为 0 表示禁用重试。
- pool_block: 如果连接池达到最大大小并且所有连接都在使用,则是否阻塞请求。默认为 False。
用法:
>>> import requests
>>> s = requests.Session()
>>> a = requests.adapters.HTTPAdapter(max_retries=3)
>>> s.mount('http://', a)
1、add_headers(request, **kwargs)
用于向 HTTP 请求中添加自定义头部信息的函数。
添加任何连接需要的头部信息。从v2.0开始,默认情况下这不会做任何事情,但用户可以通过子类化HTTPAdapter来覆盖它。
不应从用户代码中调用此方法,只有在子类化HTTPAdapter时才暴露出来。
参数
request:一个 requests.Request 对象,表示要发送的 HTTP 请求。
**kwargs:一个可变关键字参数字典,其中包含要添加到请求头部的信息。