我在这方面相当不错,并且一直在尝试将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)
但是,测试服务器正在向我抛出错误,说它无法检测多部分表单数据的边界。
我也尝试在标题中提供边界,但显然它不起作用。
boundary = post_data[2: post_data.find('\r\n')]
headers = {'Content-Type': 'multipart/form-data; boundary={}'.format(boundary)}
我错过了一些简单的事情吗?
P.S。从一些冲浪我发现了一些使用基础urllib2
的解决方案,但这将是我的最后一招,因为requests
让我很容易做很多事情。
答案 0 :(得分:3)
是的,这是我必须解决的错误。此时你做得更好:
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})