python requests - POST Multipart/form-data without filename in HTTP request

前端 未结 2 1622
失恋的感觉
失恋的感觉 2020-12-13 02:24

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/         


        
相关标签:
2条回答
  • 2020-12-13 02:40

    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--
    
    0 讨论(0)
  • 2020-12-13 02:59
    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)
    
    0 讨论(0)
提交回复
热议问题