Python requests: 通过POST发送文件时返回连接错误
我正在尝试使用Python的requests库将一个安卓的.apk文件发送到一个API服务。我之前成功地用requests和这个文件类型提交到另一个服务,但这次我总是遇到一个错误:
ConnectionError(MaxRetryError("HTTPSConnectionPool(host='REDACTED', port=443): 最大重试次数超过,网址: /upload/app (原因: [WinError 10054] 现有连接被远程主机强制关闭)",),)
下面是导致这个问题的代码:
url = "https://website"
files = {'file': open(app, 'rb')}
headers = {'user':'value', 'pass':'value'}
try:
response = requests.post(url, files=files, headers=headers)
jsonResponse = json.loads(response.text)
if 'error' in jsonResponse:
logger.error(jsonResponse['error'])
except Exception as e:
logger.error("Exception when trying to upload app to host")
响应行抛出了上面提到的异常。我用Chrome的Postman扩展用完全相同的参数来模拟这个POST请求,结果是完美的。我也用完全相同格式的文件上传到另一个RESTful服务。这个请求和那个成功的请求之间唯一的区别是,这个请求附加了自定义的头信息以验证POST。API并没有规定这需要编码作为认证,而在HTTP和cURL的示例中,这些值都被定义为头信息或-H。
任何帮助都将非常感激!
1 个回答
0
所以这确实是个证书的问题。在我的情况下,我能够在公司内部连接到另一个网址,但那个请求库(requests library)真的很棒,它有关于证书的信息,大家可以去看看:http://docs.python-requests.org/en/latest/user/advanced/?highlight=certs。虽然这个问题基本上已经解决了,但也许对将来的人会有帮助。