标头属性设置为 None 的 GET 请求使用 urllib3 引发类型错误



如何在不引发类型错误的情况下,使用 urllib3 将None作为 GET 请求标头中的参数值传递?

我尝试使用requests并且它在那里工作,但是该软件包缺少有关代理管理,池化和简单性的一些urllib3功能,遗憾的是,这些功能是该项目的必需品。

我的代码目前如下所示:

headers = {}
headers.setdefault("Attribute", None)
r = urllib3.PoolManager().request("GET", url="someurl.xyz", headers=headers)

这引发了一个TypeError: expected string or bytes-like object,因为 None 似乎是一个非法的标头值。

以下是日志的相关部分:

File "/home/user/PycharmProjects/Project/src/main/classes/oof.py", line 54, in set_fingerprint
r = self.session.request('GET', url=experiment_url, headers=headers)
File "/home/user/anaconda3/lib/python3.7/site-packages/urllib3/request.py", line 68, in request
**urlopen_kw)
File "/home/user/anaconda3/lib/python3.7/site-packages/urllib3/request.py", line 89, in request_encode_url
return self.urlopen(method, url, **extra_kw)
File "/home/user/anaconda3/lib/python3.7/site-packages/urllib3/poolmanager.py", line 324, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/home/user/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/home/user/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 354, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/home/user/anaconda3/lib/python3.7/http/client.py", line 1229, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/home/user/anaconda3/lib/python3.7/http/client.py", line 1270, in _send_request
self.putheader(hdr, value)
File "/home/user/anaconda3/lib/python3.7/http/client.py", line 1206, in putheader
if _is_illegal_header_value(values[i]):
TypeError: expected string or bytes-like object

有没有办法用urllib3规避此错误?

您应该将空字符串作为空标头传递,而不是 None

相关内容

最新更新