以下是通过fiddler查看请求的大致情况。我可以看到另外两个参数被发送,我无法使用python以编程方式发送。
--13155ffa-71a1-4e80-b213-dd238786ee20
Content-Disposition: form-data; name="image"; filename="image.jpeg"
Content-Type: image/jpeg
Content-Length: 8557
--13155ffa-71a1-4e80-b213-dd238786ee20
Content-Disposition: form-data; name="lat"
Content-Length: 6
18.975
--13155ffa-71a1-4e80-b213-dd238786ee20
Content-Disposition: form-data; name="long"
Content-Length: 10
第一个是Content-Length,第二个是文件下的Content-Type。是否可以在请求中执行此操作?
答案 0 :(得分:0)
As stated in the documentation,可以通过将三元素元组作为files
dict的值传递来设置Content-Type,例如:
requests.post(
url,
files={
'image': ('image.jpeg', filehandle, 'image/jpeg'),
'lat': ('filename', filehandle, 'text/plain'),
'long': ('filename', filehandle, 'application/octet-stream'),
},
)
您无法设置Content-Length标头,因为请求会自动为您设置。使用与一个请求集不同的Content-Length的唯一原因是,如果(a)请求的长度错误,在这种情况下,您应该提交错误报告,或者(b)您想骗你的服务器'重新发送数据,这是错误的。