应答器和解码器

响应

class urllib3.response.HTTPResponse(body='', headers=None, status=0, version=0, reason=None, strict=0, preload_content=True, decode_content=True, original_response=None, pool=None, connection=None, msg=None, retries=None, enforce_content_length=False, request_method=None, request_url=None, auto_close=True)

基类:io.IOBase

HTTP响应容器。

向后兼容httplib的httpresponse,但响应 bodydata 属性被访问。这个类还与python标准库的 io 模块,因此可以在该框架的上下文中被视为可读对象。

httplib.httpresponse中不存在行为的额外参数:

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

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

  • original_response -- 当这个HttpResponse包装器是从HttpLib.HttpResponse对象生成的时,可以方便地包含原始的用于调试的内容。否则就不用了。

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

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

CONTENT_DECODERS = ['gzip', 'deflate']
DECODER_ERROR_CLASSES = (<class 'OSError'>, <class 'zlib.error'>)
REDIRECT_STATUSES = [301, 302, 303, 307, 308]
close()

刷新并关闭IO对象。

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

property closed
property connection
property data
fileno()

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

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

flush()

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

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

classmethod from_httplib(r, **response_kw)

给定一个 httplib.HTTPResponse 实例 r ,返回相应的 urllib3.response.HTTPResponse 对象。

剩余的参数与 original_response=r .

get_redirect_location()

我们应该重定向到哪里?

返回

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

getheader(name, default=None)
getheaders()
geturl()

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

info()
isclosed()
read(amt=None, decode_content=None, cache_content=False)

类似 httplib.HTTPResponse.read() ,但有两个附加参数: decode_contentcache_content .

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

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

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

read_chunked(amt=None, decode_content=None)

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

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

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

readable()

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

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

readinto(b)
release_conn()
stream(amt=65536, decode_content=None)

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

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

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

supports_chunked_reads()

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

tell()

获取到目前为止通过连线拖出的字节数。可能不同于 :meth:``HTTPResponse.read` `如果字节在线路上编码(例如,压缩)。

译码器

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

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

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