I am trying to replicate the following POST request using the requests module in python:
POST /example/asdfas HTTP/1.1
Host: example.com
User-Agent: Mozilla/
The solution is to use tuples when passing parameters to the files argument:
import requests
requests.post('http://example.com/example/asdfas', files={'value_1': (None, '12345'), 'value_2': (None, '67890')})
Works as expected:
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, compress',
'Content-Length': '228',
'User-Agent': 'python-requests/2.2.1 CPython/3.3.2 Windows/7',
'Content-Type': 'multipart/form-data; boundary=85e90a4bbb05474ca1e23dbebdd68ed9'
--85e90a4bbb05474ca1e23dbebdd68ed9
Content-Disposition: form-data; name="value_1"
12345
--85e90a4bbb05474ca1e23dbebdd68ed9
Content-Disposition: form-data; name="value_2"
67890
--85e90a4bbb05474ca1e23dbebdd68ed9--
import requests
from requests_toolbelt import MultipartEncoder
url = 'http://example.com/example/asdfas'
fields = {'value_1':'12345', 'value_2': '67890'}
data = MultipartEncoder(fields=fields)
headers["Content-type"] = m.content_type
requests.post(url=url, data=data, headers=headers)