用curl 提交二进制数据可以,requests无效

发布于 2022-09-13 00:16:47 字数 918 浏览 28 评论 0

curl代码
curl "http://example.com?id=0&token=token" --header 'Content-Type:video/mp4'  --data-binary "@/video.mp4.part0"

用requests复现这个代码,则无效

import requests

headers = {
    'Content-Type': 'video/mp4',
}

params = (
    ('id', '0'),
    ('token', 'token'),
)

data = open('/video.mp4.part0', 'rb').read()
response = requests.post('http://example.com', headers=headers, params=params, data=data)

我还尝试过其它方法

  1. 在headers里增加application/x-www-form-urlencoded;application/json
  2. 将video.mp4.part0 构造成一个files字典 {"file":open('video.mp4.part0','rb')}
  3. 在requests里,将请求data,变成files等等
  4. 我还试过,将请求参数放到params里,并且urllib.parse.urlencode;然后放到url里 requests.post(url,headers=headers,data=data) #这里的url放的是带参数的

目前还是,CURL可以正常上传;但是requests方式不可以。
请问这是什么原因,用requests的话,要如何重构这个curl请求

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偷得浮生 2022-09-20 00:16:47

我测试 requests.post('http://sxxx', data='字符串数组')可以收到. 不知道你是怎么认为自己没收到的.

image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文