使用生成下载和下载文件的 Python 发送 POST 请求

时间:2021-03-31 14:20:37

标签: python rest post

有一个网站有一个下载 Excel 文件的按钮。单击后,服务器 API 大约需要 20 秒才能生成文件并将其发送回浏览器进行下载。

如果我在单击按钮后监控通信,我可以看到浏览器如何使用一系列标头和表单值向服务器发送 POST 请求。

Snapshot of the form data

有没有一种方法可以使用 Python 以编程方式模拟类似的 POST 请求,并在服务器发送过来后检索 Excel 文件?

提前致谢

2 个答案:

答案 0 :(得分:1)

requests 模块用于发送各种请求类型。

requests.post 同步发送 post 请求。
可以使用 data=
设置有效载荷数据 可以使用 .content 访问响应。
请务必检查 .status_code 并仅保存成功响应代码

还要注意open里面的“wb”的使用,因为我们想把文件保存为二进制而不是文本。

示例:

import requests

payload = {"dao":"SampleDAO",
           "condigId": 1,
           ...}

r = requests.post("http://url.com/api", data=payload)

if r.status_code == 200:
    with open("file.save","wb") as f:
        f.write(r.content)

Requests Documentation

答案 1 :(得分:-1)

我想你也可以这样做:

file_info = request.get(url)

with open('file_name.extension', 'wb') as file:
    file.write(file_info.content)

老实说,我不知道如何解释这一点,因为我对它的工作原理知之甚少