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

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请求


回答:

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

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

以上是 用curl 提交二进制数据可以,requests无效 的全部内容, 来源链接: utcz.com/p/937987.html

回到顶部