Python请求表单数据为每个请求添加内容长度

时间:2017-04-17 20:01:09

标签: python python-requests multipartform-data

以下是通过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。是否可以在请求中执行此操作?

1 个答案:

答案 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)您想骗你的服务器'重新发送数据,这是错误的。