2017-04-17 58 views
0

这里粗略地说明了请求通过fiddler看起来如何。我可以看到两个额外的参数发送,我不能用python编程发送。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

As stated in the documentation,在Content-Type可以通过使三元素的元组作为files字典的值,例如被设定,:

requests.post(
    url, 
    files={ 
     'image': ('image.jpeg', filehandle, 'image/jpeg'), 
     'lat': ('filename', filehandle, 'text/plain'), 
     'long': ('filename', filehandle, 'application/octet-stream'), 
    }, 
) 

不能设置的Content-Length头,作为请求集它会自动为你。如果(a)请求的长度错误,在这种情况下,你应该提交一个错误报告,或者(b)你想对服务器撒谎,你需要设置不同的内容长度,重新发送数据,这是错误的。

+0

谢谢,结果很好。 – taijamen