应答器和解码器#

响应#

class urllib3.response.BaseHTTPResponse(*, headers=None, status, version, reason, decode_content, request_url, retries=None)#

基类:IOBase

参数:
CONTENT_DECODERS = ['gzip', 'deflate']#
DECODER_ERROR_CLASSES: tuple[type[Exception], ...] = (<class 'OSError'>, <class 'zlib.error'>)#
REDIRECT_STATUSES = [301, 302, 303, 307, 308]#
close()#

刷新并关闭IO对象。

如果文件已关闭,则此方法无效。

返回类型:

None

property connection: HTTPConnection | None#
property data: bytes#
drain_conn()#
返回类型:

None

get_redirect_location()#

我们应该重定向到哪里?

返回:

如果得到重定向状态代码和有效位置,则返回truthy重定向位置字符串。 None 如果重定向状态没有位置。 False 如果不是重定向状态代码。

返回类型:

str | None | Literal[False]

getheader(name, default=None)#
参数:
  • name (str) --

  • default (str | None) --

返回类型:

str | None

getheaders()#
返回类型:

HTTPHeaderDict

geturl()#
返回类型:

str | None

info()#
返回类型:

HTTPHeaderDict

json()#

将HTTP响应的正文解析为JSON。

要使用自定义JSON解码器,请传递 HTTPResponse.data 传给解码者。

此方法可以引发 UnicodeDecodeErrorjson.JSONDecodeError

阅读更多内容 here

返回类型:

Any

read(amt=None, decode_content=None, cache_content=False)#
参数:
  • amt (int | None) --

  • decode_content (bool | None) --

  • cache_content (bool) --

返回类型:

bytes

read_chunked(amt=None, decode_content=None)#
参数:
  • amt (int | None) --

  • decode_content (bool | None) --

返回类型:

Iterator[bytes]

readinto(b)#
参数:

b (bytearray) --

返回类型:

int

release_conn()#
返回类型:

None

property retries: Retry | None#
stream(amt=65536, decode_content=None)#
参数:
  • amt (int | None) --

  • decode_content (bool | None) --

返回类型:

Iterator[bytes]

property url: str | None#
class urllib3.response.HTTPResponse(body='', headers=None, status=0, version=0, reason=None, preload_content=True, decode_content=True, original_response=None, pool=None, connection=None, msg=None, retries=None, enforce_content_length=True, request_method=None, request_url=None, auto_close=True)#

基类:BaseHTTPResponse

HTTP响应容器。

向后兼容 http.client.HTTPResponse 但是他们的反应 body 属性时按需加载和解码 data 属性被访问。该类还与Python标准库的 io 模块,因此可以将其视为该框架上下文中的可读对象。

中未出现的行为的其他参数 http.client.HTTPResponse

参数:
  • preload_content (bool) -- 如果为真,响应体将在施工期间预加载。

  • decode_content (bool) -- 如果为true,将尝试基于“内容编码”头解码正文。

  • original_response (_HttplibHTTPResponse | None) -- 当此HTTPResponse包装从 http.client.HTTPResponse 对象,为了进行调试,可以方便地包含原始文件。否则就没人用过了。

  • retries (Retry | None) -- 重试包含最后一次 Retry 这是在请求期间使用的。

  • enforce_content_length (bool) -- 强制内容长度检查。服务器返回的正文必须与内容长度头(如果存在)的值匹配。否则,引发错误。

  • body (_TYPE_BODY) --

  • headers (Mapping[str, str] | Mapping[bytes, bytes] | None) --

  • status (int) --

  • version (int) --

  • reason (str | None) --

  • pool (HTTPConnectionPool | None) --

  • connection (HTTPConnection | None) --

  • msg (_HttplibHTTPMessage | None) --

  • request_method (str | None) --

  • request_url (str | None) --

  • auto_close (bool) --

auto_close#
status#
headers#
CONTENT_DECODERS = ['gzip', 'deflate']#
DECODER_ERROR_CLASSES: tuple[type[Exception], ...] = (<class 'OSError'>, <class 'zlib.error'>)#
REDIRECT_STATUSES = [301, 302, 303, 307, 308]#
close()#

刷新并关闭IO对象。

如果文件已关闭,则此方法无效。

返回类型:

None

property closed: bool#
property connection: HTTPConnection | None#
property data: bytes#
drain_conn()#

读取并丢弃响应连接中的任何剩余HTTP响应数据。

HTTPResponse连接中的未读数据会阻止连接释放回池。

返回类型:

None

fileno()#

返回基础文件描述符(如果存在)。

如果io对象不使用文件描述符,则会引发oserror。

返回类型:

int

flush()#

刷新写入缓冲区(如果适用)。

这不是为只读流和非阻塞流实现的。

返回类型:

None

get_redirect_location()#

我们应该重定向到哪里?

返回:

如果得到重定向状态代码和有效位置,则返回truthy重定向位置字符串。 None 如果重定向状态没有位置。 False 如果不是重定向状态代码。

返回类型:

str | None | Literal[False]

getheader(name, default=None)#
参数:
  • name (str) --

  • default (str | None) --

返回类型:

str | None

getheaders()#
返回类型:

HTTPHeaderDict

geturl()#
返回类型:

str | None

info()#
返回类型:

HTTPHeaderDict

isatty()#

返回这是否是互动流。

如果无法确定,则返回FALSE。

isclosed()#
返回类型:

bool

json()#

将HTTP响应的正文解析为JSON。

要使用自定义JSON解码器,请传递 HTTPResponse.data 传给解码者。

此方法可以引发 UnicodeDecodeErrorjson.JSONDecodeError

阅读更多内容 here

返回类型:

Any

read(amt=None, decode_content=None, cache_content=False)#

类似于 http.client.HTTPResponse.read() ,但带有两个附加参数: decode_contentcache_content

参数:
  • amt (int | None) -- 要阅读多少内容。如果指定,将跳过缓存,因为将部分内容缓存为完整响应是没有意义的。

  • decode_content (bool | None) -- 如果为true,将尝试基于“内容编码”头解码正文。

  • cache_content (bool) -- 如果为true,则将保存返回的数据,以便不管基础文件对象的状态如何,都返回相同的结果。如果您想要 .data 拥有后继续工作的属性 .read() 文件对象。(如果 amt 已设置。)

返回类型:

bytes

read_chunked(amt=None, decode_content=None)#

类似 HTTPResponse.read() ,但有一个附加参数: decode_content .

参数:
  • amt (int | None) -- 要阅读多少内容。如果指定,将跳过缓存,因为将部分内容缓存为完整响应是没有意义的。

  • decode_content (bool | None) -- 如果为true,将尝试基于“内容编码”头解码正文。

返回类型:

Generator[bytes, None, None]

readable()#

返回是否打开对象进行读取。

如果为false,read()将引发oserror。

返回类型:

bool

readinto(b)#
参数:

b (bytearray) --

返回类型:

int

readline(size=-1, /)#

从流中读取并返回一行。

如果指定了SIZE,将读取最大大小的字节。

对于二进制文件,行终止符始终为b‘n’;对于文本文件,要打开的新行参数可用于选择可识别的行终止符(S)。

readlines(hint=-1, /)#

返回流中的行列表。

可以指定提示来控制读取的行数:如果到目前为止所有行的总大小(以字节/字符为单位)超过提示,则不会再读取任何行。

release_conn()#
返回类型:

None

property retries: Retry | None#
seek()#

更改流位置。

将流位置更改为给定的字节偏移量。偏移量是相对于位置指示的位置进行解释的。其中的值包括:

  • 0--流的开始(默认);偏移量应为零或正数

  • 1--当前流位置;偏移量可以为负数

  • 2--流结束;偏移量通常为负数

返回新的绝对位置。

seekable()#

返回Object是否支持随机访问。

如果为FALSE,则Seek()、Tell()和Truncate()将引发OSError。此方法可能需要执行测试Seek()。

stream(amt=65536, decode_content=None)#

read()方法的生成器包装器。呼叫将被阻止,直到 amt 已从连接中读取字节或直到连接关闭。

参数:
  • amt (int | None) -- 要阅读多少内容。生成器每次迭代最多返回许多数据,但返回的数据可能更少。这在使用压缩数据时尤其可能。但是,空字符串将永远不会返回。

  • decode_content (bool | None) -- 如果为true,将尝试基于“内容编码”头解码正文。

返回类型:

Generator[bytes, None, None]

supports_chunked_reads()#

检查基础类似文件的对象是否看起来像 http.client.HTTPResponse 对象。我们通过测试fp属性来实现这一点。如果它存在,我们假设它返回由read_chunked()处理的原始块。

返回类型:

bool

tell()#

获取到目前为止通过网络拉出的字节数。返回的内容数量可能不同。 :meth:``urllib3.response.HTTPResponse.read` `如果字节在线路上编码(例如,压缩)。

返回类型:

int

truncate()#

截断文件以调整字节大小。

文件指针保持不变。Size缺省为Tell()报告的当前IO位置。返回新大小。

property url: str | None#

返回此响应源的URL。如果生成此响应的请求重定向,则此方法将返回最终重定向位置。

writable()#

返回Object是否被打开以进行写入。

如果为FALSE,WRITE()将引发OSError。

writelines(lines, /)#

编写要流传输的行的列表。

没有添加行分隔符,因此通常提供的每一行的末尾都有一个行分隔符。

译码器#

解码器类用于使用 Content-Encoding 转化为未压缩的二进制表示。

class urllib3.response.DeflateDecoder#
class urllib3.response.GzipDecoder#
class urllib3.response.MultiDecoder(modes)#
来自RFC7231:

如果一个或多个编码已应用于表示,则应用编码的发送方必须生成一个内容编码头字段,该字段按应用的顺序列出内容编码。

参数:

modes (str) --