python_接口

假装没事ソ 提交于 2019-12-03 22:27:41

一、urllib模块

urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块。

urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出来使用的话,还得用json,发get请求和post请求,也不通,使用比较麻烦

 1 import json
 2 from urllib import request
 3 from urllib import parse
 4 
 5 #【get请求】
 6 url = 'http://api.nnzhp.cn/api/user/stu_info'
 7 
 8 data={"stu_name":"xiaohei"}
 9 
10 tmpData=parse.urlencode(data) #1、将数据变为k=v模式
11 print(tmpData)
12 # 接口+参数
13 tmpUrl=url+'?'+tmpData # 接口参数拼接
14 print(tmpUrl)
15 res = request.urlopen(tmpUrl) # 请求接口
16 resForRead = res.read() # 通过read安啊获取返回值结果,返回值结果为Bytes类型
17 print(res.read())
18 #待b的是bytes类型  bytes类型转成str类型:后面加.decode()
19 
20 resForString = resForRead.decode() # 通过decode将bytes转成str类型
21 print(resForString)
22 
23 # 2、想得到参数里面某一个字段,要先通过json变成字典的形式,然后再取值
24 resForDict = json.loads(resForString) # 通过json将字典转成字典
25 print(resForDict)
26 
27 # 3、必须符合字典的格式才能取值
28 # 加上[]
29 
30 # 【POST】请求
31 url = 'http://api.nnzhp.cn/api/user/login'
32 data={"username":"niuhanyang","passwd":"aA123456"}
33 tmpData = parse.urlencode(data) # k=v
34 
35 # post 请求写法
36 res=request.urlopen(url,tmpData.encode()) # post请求 参数1为接口地址;参数2为bytes
37 print(res.read().decode())
38 # post和get请求区别在于 urlopen时,get发的是接口和参数的平层字符串
{
        "error_code": 0,
        "login_info": {
                "login_time": "20191106204328",
                "sign": "65ea3b950abe9aa55f23092449e1da3a",
                "userId": 2170
        }
}

 

 

二、requests模块

需pip install requests导入

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!