我对此相当菜鸟,并且一直在尝试使用requests
模块来post
多部分/表单数据。澄清一下,我尝试使用的确切测试用例与 https://github.com/kennethreitz/requests/issues/1081 中的测试用例相同。 。即我正在尝试在没有文件的情况下进行 post
:
--3eeaadbfda0441b8be821bbed2962e4d
Content-Disposition: form-data; name="key1"
value1
--3eeaadbfda0441b8be821bbed2962e4d
根据线程上的讨论,我尝试了 MultiPart form data scheme执行以下操作:
import requests
from requests_data_schemes import multipart_formdata as mfd
post_data = [('mouseAction', 'toggle'), ('zone' ,'10')]
post_data = mfd(post_data)
headers = {'Content-Type': 'multipart/form-data'}
req = requests.post(<url>, data=post_data, headers=headers)
但是,测试服务器向我抛出一个错误,指出它无法检测多部分表单数据的边界。
我也尝试在 header 中提供边界,但显然它不起作用。
boundary = post_data[2: post_data.find('\r\n')]
headers = {'Content-Type': 'multipart/form-data; boundary={}'.format(boundary)}
我错过了一些简单的事情吗?
附注通过一些冲浪,我发现了一些使用基本 urllib2
的解决方案,但这将是我最后的手段,因为 requests
让我可以轻松地做很多事情。
最佳答案
是的,这是我必须解决的错误。此时您最好执行以下操作:
from requests.packages.urllib3.filepost import encode_multipart_formdata
(content, header) = encode_multipart_formdata([('key', 'value')])
r = requests.post(url, data=content, headers={'Content-Type': header})
关于Python:使用多部分/表单数据的请求库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982741/