如何在不引发类型错误的情况下,使用 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