day8_好用的网络编程

首先要安装requests模块,pip install requests接口文档地址是http://doc.nnzhp.cn/

import requests
url = 'http://api.nnzhp.cn/api/user/stu_info'
data = {'stu_name': '小黑'}  # 字典
res = requests.get(url, params=data)  # 发送get请求
print(res.status_code)  # 打印状态码
print(res.json())  # 打印出字典,如果接口返回的是json串的话,才能用.json(),get请求也一样,返回的是json串的话,才能用.json()
print(type(res.json()))  # 打印出<class 'dict'>
print(res.url)  # 打印url,拼接后的url,汉字变成编码
print(res.text)  # 打印的json串
print(type(res.text))  # 打印<class 'str'>

 

import requests
url = 'http://api.nnzhp.cn/api/user/login'
data = {'username': 'niuhanyang', 'passwd': 'aA123456'}  # 字典
res = requests.post(url, data)  # 发送post请求,如果只传data说明入参是k-v类型,如果url是https的,要加一个参数verify=False
print(res.status_code)  # 打印状态码
print(res.json())  # 打印出字典
print(type(res.json()))  # 打印出<class 'dict'>
print(res.url)  # 打印url,拼接后的url,post请求的url不含参数,就是传入的url
print(res.text)  # 打印的json串
print(type(res.text))  # 打印<class 'str'>

 

import requests
url = 'http://api.nnzhp.cn/api/user/add_stu'
data = {'name': '小花', 'grade': '处女座', 'phone': 13800138005}  # 字典
res = requests.post(url, json=data)  # 入参是json类型,在post请求中指定json=data
print(res.status_code)  # 打印状态码
print(res.json())  # 打印出{'error_code': 0, 'msg': '操作成功!'}
print(type(res.json()))  # 打印出<class 'dict'>
print(res.url)  # 打印url,拼接后的url,post请求的url不含参数,就是传入的url
print(res.text)  # 打印的json串
print(type(res.text))  # 打印<class 'str'>

 

# 带cookie的请求
import requests
url = 'http://api.nnzhp.cn/api/user/gold_add'
data = {'stu_id': 1, 'gold': 10000}  # 字典
cookie = {'niuhanyang': '33f8fd533c05868465618fff68fa05d7'}
res = requests.post(url, data, cookies=cookie)  # 可以传入多个cookie,所以是cookies=,如果cookie是k-v的一大坨,可以传k-v,也可以全部传进去一个字符串

print(res.json())  # 打印出{'error_code': 0, 'msg': '操作成功!'}
print(type(res.json()))  # 打印出<class 'dict'>
print(res.text)  # 打印的json串
print(type(res.text))  # 打印出<class 'str'>
在start的日志可以看到获取到了cookies

 

# 带header的请求
import requests
url = 'http://api.nnzhp.cn/api/user/all_stu'
header = {'Referer': 'http://api.nnzhp.cn/'}  # header里面传的时候不能有中文
res = requests.get(url, headers=header)  # 可以传入多个header,所以是headers=
print(res.json())  # 打印出{'error_code': 0, 'msg': '操作成功!'}
print(type(res.json()))  # 打印出<class 'dict'>
print(res.text)  # 打印的json串
print(type(res.text))  # 打印出<class 'str'>
在start的日志可以看到获取到了headers

 

# 利用post请求实现上传文件的代码
file = {'file_name': open('上周回顾.py', encoding='utf8')}
url = 'http://127.0.0.1:8000/upload'
r = requests.post(url, files=file)
print(r.text)  # 上传文件的代码如下图,在bin目录可以看到上传文件成功

 

# 文件上传到服务器
import requests
url = 'http://api.nnzhp.cn/api/file/file_upload'
# 当前目前下直接传文件,不在当前路径下传文件的绝对路径,如果打开的文件有中文,要以rb模式打开或者用encoding='utf-8'
# res = requests.post(url, files={'file': open(r'C:\Users\sunshujiang\PycharmProjects\hua\c.txt')}).text
res = requests.post(url, files={'file': open('好用的网络编程.py', encoding='utf-8')}).text
print(res)  # 打印的json串


# 上传文件 
@server.route('/upload', methods=['post'])
def upload():
# 上传文件接口
print(request.files)
f = request.files.get('file_name', None) # 如果没有上传文件,默认是None
if f:
t = time.strftime('%Y%m%d%H%M%S') # 获取当前时间
new_file_name = t + f.filename # 给文件重命名,防止有重复文件覆盖
abs_path = os.path.join(UPLOAD_PATH, new_file_name) # 修改上传文件的路径用这行和下行代码
f.save(abs_path) # 保存文件
# f.save(new_file_name) # 保存文件,默认存在bin目录下,因为start.py在bin目录
return my_json({"code": "ok"})
else:
return my_json({"msg": "请上传文件!"})
posted @ 2018-03-14 11:42  laosun0204  阅读(111)  评论(0编辑  收藏  举报