关于python3.6上传文件时报错:HTTPSConnectionPool(host='***.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAIL解决办法
第一个报错:
最近在练习post请求中上传文件时遇到了一个奇葩事情,两台电脑上写了一模一样的代码,一个运行正常,另一个一片红。
最后了解了一下原因以及解决办法。先记录下关键代码:
files = {"files":(r"F:\test.txt","xixihaha")} #直接将目标文件内容xixihaha通过文件test.txt进行上传
r = requests.post(url,files=files)
print(r.headers)
#前边的请求地址就不写了。
代码运行后报错如下:
requests.exceptions.SSLError: HTTPSConnectionPool(host='****.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)'),))
截图:
报错信息其实有很多,这是一关键信息。了解了一下 ,说是requests请求时证书认证失败的问题。
又找解决的方法;
加了一句这样的东西:verify=False
(加这个东西大概意思就是:将verify设置为False,Requests忽略对SSL证书的验证
)
然后代码就变成了 :
files = {"files":(r"F:\test.txt","send sesss")} # 2、直接将目标文件内容xixihaha通过文件test.txt进行上传。
r = requests.post(url,files=files,verify=False)
print(r.headers)
print(r.text)
然后再运行一下 ,成功了 。哈哈
第二个警告:
上边的主要问题解决了 ,又冒出来了一个新的问题。
就是下边的这个警告信息,如下:
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)
其实这东西是对我前边设置了移除对SSL认证操作的警告。
其解决办法就是在前边加上下边两句话,具体如下:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
作用:禁用解除安全警告
然后那些鬼警告就不见了 。
有新问题,欢迎各位评论见,一起解决、一起学习、一起进步。