requests库笔记
- 详细系统知识可见菜鸟教程:requests库
同时传入GET
和POST
请求
错误范例:
1
2
3
4
5
6import requests
#略....
response_post = requests.post(url,data = data)
response_get = requests.get(url, params = params)
#略....这样会让两个请求分次发送,比如以下后端代码:
1
2
3
4
5
6$file = $_GET['file'];
$content = $_POST['c'];
if issert($_GET['file']){
printf($file);
printf($content);
}如果按照第一个python脚本的请求发送方式,第一次只传达了
get
请求而未传递post
请求,则$_content
值为空。正确范例:
1
2
3
4import requests
response = requests.post(url, params=params, data=data)
#略...此时我们就可以同时传入两种不同请求。
详细介绍POST
和GET
请求的底层逻辑,可见@Traveler2000
的博客:$_GET 与 $_POST 数组相关知识上传二进制文件
如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14import requests
base_url = "http://127.0.0.1:14564/"
download_path = "original.wav"
upload_path = "compare-recording"
audio = requests.get(base_url + download_path).content
with open("recording.wav", "wb") as f:
f.write(audio)
response = requests.post(base_url + upload_path, files={"audio": open("recording.wav", "rb")})
print(response.text)**
content
与text
**的区别:.content
:直接访问原始字节流,适用于所有类型的数据,尤其是二进制文件。针对于视频,文本文档。.text
:自动解码为 Unicode 字符串,适用于文本数据,但需注意编码问题。比如前端html显示的文本。这里我们就是用
.content
方法把/original.wav
的二进制数据提取到audio。再写入要上传的recording.wav。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dedsec的博客!