为什么 HTTPSConnectionPool 不起作用,而 PoolManager 却起作用?

Yan*_*ann 5 python urllib3

我已经使用 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)
Run Code Online (Sandbox Code Playgroud)

这是我的 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})
Run Code Online (Sandbox Code Playgroud)

对于 HTTPSConnectonPool:

manager = urllib3.HTTPSConnectionPool(HOST, port=PORT)
res = manager.request('POST', PATH, {'req':xml_request})
Run Code Online (Sandbox Code Playgroud)

Mat*_*ttH 5

https://some.url.com不是主机名或 IP 地址,而是 URL。所以你向 提供了错误的信息HTTPSConnectionPool

此外,PoolManagerHTTPSConnectionPool并不处于同一抽象级别。为您PoolManager管理实例。ConnectionPool