一、前言:
本人使用的开发环境是python 3.7.4
首先下载requests包:
pip install requests
导包:
import requests
import json
在接口调用过程中(程序运行),出现如下错误:
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘oapi.dingtalk.com’, port=443): Max retries exceeded with url: /user/listbypage?access_token=access_token&department_id=id&offset=0&size=40 (Caused by SSLError(SSLError(“bad handshake: SysCallError(10060, ‘WSAETIMEDOUT’)”)))
问题1)、HTTPSConnectionPool(host='z.jd.com', port=443),需要取消认证:在requests请求参数中添加
verify=False参数。
如:requests.get('https://www.baidu.com/',verify=False)
问题2)、取消认证之后都还是不能一次,可以加入另外一个参数:timeout=60。
如:requests.get('https://www.baidu.com/',verify=False,timeout=60)
问题3)、InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.See:*******,解决办法如下,在项目引用requests模块后禁用这个报警:
如:requests.packages.urllib3.disable_warnings()
问题4)、为了保证请求的信息编码格式,可以加入请求头,
headers= {"Content-Type": "application/json;charset=utf-8"}
如:requests.get('https://www.baidu.com/',verify=False,headers=headers)
问题5)、请求失败,可以增加连接的次数
requests.adapters.DEFAULT_RETRIES = 10
问题6)、如果建立的连接没有及时关闭,可以做如下操作关闭连接。
session = requests.session()
session.keep_alive = False
#默认情况是True。
问题7)、排查问题前可以检查一下,自己的环境和接口说明文档,是否有访问频率限制和格式要求,是否缺少requests依赖包:
如:pyOpenSSL包、ndg-httpsclient、pyasn1,如果缺少就:
pip install pyOpenSSL
pip install ndg-httpsclient
ndg-httpsclient pyasn1
问题8)、在程序的外面可以通过time来控制接口调用的时间:
如:time.sleep(10)-----程序休息10秒钟。
其他问题:
#转化成自己需要的数据格式:转换成python格式的数据
# value = bytes(json.dumps(data_info,ensure_ascii=False,indent=4),"utf-8")
# value = bytes(json.loads(data_info,ensure_ascii=False,indent=4),"utf-8")
请求后的返回结果:
res = requests.get(url_users,timeout=60,verify=False,headers=HEADERS).text
response = json.loads(res)[“你需要的key”]
将结果存储在mysql数据库中:
从数据库查询的结果集:
import pymysql --------如果没有这个模块可以pip install pymysql
connect = pymysql.Connect(host='ip',port=port,user='user',
passwd = 'password',db='databasename',charset='utf8')
#如果是连接mssql,可以pip install mssql。
cursor = connect.cursor()
sql = """ select * from table_name"""
cursor.excute(sql)
#获取结果集
results = cursor.fetchall()
#遍历结果集
for res in results :
i = 0
re = res[i]
#打印结果看看是不是你需要的,如果不是可以稍做调整。
print(re)
拓展:(Python 十大装 B 语法)
https://mp.weixin.qq.com/s/FuQhj8wtq2V9w9Ntiu-cJA
参考其他:
https://blog.csdn.net/wdh315172/article/details/80491668?utm_source=app