【python + request发送简单的请求】
说明:这是面向对象的编程,目的仅是实现功能,无扩展 和 面向对象 可言,一步一步来,提升编程的规范
以下示例 接口参数格式:json格式
import requests import json '''发送新增警员信息的http请求''' #以字典的方式存储需要传递的参数 add_url = 'http://XX.XXX.XXX.XX:端口号/car-oss/webapi/pcWatch/save' add_par = { 'pcNum':'95830', 'pcName':'测试', 'pcPhoneNum':'22345', 'orgname':'M1对讲', 'watchImei':'11220' } #以字典方式储存定制的headers请求头信息 add_header = { 'Content-Type':'application/json', 'connection':'keep-alive' } #用户登录前的cookies,因为用户登录后才能进行新增警员信息的操作 add_cookie = { "JSESSIONID":"3E2ED9359E53D31FBD13FE2ADE9D20D2" } r = requests.post(add_url,data=json.dumps(add_par),headers=add_header,cookies=add_cookie)#参数要转json格式传输要使用json.dumps()进行转换 #以文本方式获取请求响应内容 print(r.text) ''' 查询上刚刚新增的那条信息 ''' Search_url='http://XX.XXX.XXX.XX:端口号/car-oss/webapi/easyflow/datatable/queryresult' Search_par={ "pageSize":10, "pageIndex":1, "orgname":"M1对讲", "pcNum":"95830", "watchImei":"", "name":"pc_watch_manage" } Search_header={ 'Content-Type':'application/json' } Search_cookie={ 'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2' } r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header,cookies=Search_cookie) print(r1.text)
参数要转json格式传输要使用json.dumps()进行转换
以下示例 接口参数:以form表单形式
add_par =pcredit_encrypt() #字典的形式 # 以字典方式储存定制的headers请求头信息 add_header = { 'Content-Type': 'application/x-www-form-urlencoded', 'connection': 'keep-alive' } # 用户登录前的cookies,因为用户登录后才能进行新增警员信息的操作 add_cookie = { "JSESSIONID": "3E2ED9359E53D31FBD13FE2ADE9D20D2" } r = requests.post(add_url, data=add_par, headers=add_header)
Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典
可以参照:https://www.cnblogs.com/du-hong/p/10592519.html
【python把响应数据中Unicode转中文】
''' 这是响应数据:b'{"xe5xa7x93……"}' 这是期望效果:{"姓名":"郑……","邮箱":"ea.cn","手机号":"134……","地址":"……-12-9","身份证号":"1356……","银行卡号":"621……"} ''' print(r.content.decode('UTF-8')) #这样即可
【python处理接口的响应数据】
将str转换为dict
temp={"姓名":"李某某","邮箱":"oma01ud@googlemail.com","手机号":"13608377932","地址":"兰山路53号-13-7","身份证号":"360600199806197128","银行卡号":"6222021934694345603"} #type(temp) 是str #要获取str 中的姓名、手机号、身份证号 tem=json.loads(temp) print(type(tem)) #dict #这是一种,还有其他方法 #https://www.cnblogs.com/xiao-xue-di/p/11414210.html
用正则表达式提取
''' content=Oo%2Bbd3D%0A&sign=BGN32kwD0A '''' r = requests.post(add_url, data=add_par, headers=add_header) temp = r.content.decode('UTF-8') #正则表达式 提取str 中的content sign content=re.findall(r"content=(.+?)&",temp) #提取到是一个list sign = re.findall(r"sign=(.+)", temp) trade={} trade['content']=content[0] #需要取第1个元素 trade['sign'] = sign[0]