我已经使用 PoolManager 和 HTTPSConnectionPool 测试了“POST”请求。第一个有效,另一个给我一个:
urllib3.exceptions.MaxRetryError:
HTTPSConnectionPool(host='https://some.url.com', port=443):
Max retries exceeded with url: /some-api (Caused by <class 'socket.gaierror'>:
[Errno -2] Name or service not known)
这是我的 PoolManager 代码:
import urllib3
HOST = 'https://some.url.com'
PORT = 443
PATH = '/some-api'
xml_request = '<some xml tree/>'
manager = urllib3.PoolManager()
res = manager.request('POST', HOST+PATH, {'req':xml_request})
对于 HTTPSConnectonPool:
manager = urllib3.HTTPSConnectionPool(HOST, port=PORT)
res = manager.request('POST', PATH, {'req':xml_request})
最佳答案
https://some.url.com
不是主机名或 IP 地址,它是一个 URL。所以你给 HTTPSConnectionPool
提供了错误的信息。
此外,PoolManager
和 HTTPSConnectionPool
不在同一抽象级别。 PoolManager
为您管理 ConnectionPool
实例。
关于python - 当 PoolManager 起作用时,为什么 HTTPSConnectionPool 不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24160244/