Python请求:通过POST发送文件返回ConnectionError

时间:2014-03-13 18:49:33

标签: python rest python-requests

我正在尝试使用Python请求库将android .apk文件发送到API服务。我已成功使用请求和此文件类型提交给另一个服务,但我一直得到:

  

ConnectionError(MaxConnetryError(“HTTPSConnectionPool(host ='REDACTED',port = 443):使用url:/ 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 :(得分:0)

所以这确实是一个证书问题。在我的情况下,我能够保持公司内部并连接到另一个URL,但请求库非常惊人,有关于证书的信息:http://docs.python-requests.org/en/latest/user/advanced/?highlight=certs 对于所有意图和目的,这都得到了回答,但也许对后人有用。