关于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)

作用:禁用解除安全警告

然后那些鬼警告就不见了 。

有新问题,欢迎各位评论见,一起解决、一起学习、一起进步。

posted @ 2018-10-21 15:21  漂泊的小虎  阅读(6327)  评论(12编辑  收藏  举报