Python:使用多部分/表单数据的请求库

标签 python python-2.7 multipartform-data python-requests

我对此相当菜鸟,并且一直在尝试使用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/

相关文章:

python - 动态构建字符串 'string' .format()

python - 在 Python for 循环中访问 JSON 数据时遇到问题

java - 当我尝试发送包含内联图像的电子邮件时(使用 Jersey 2 REST 客户端和 Mailgun 网络服务发送电子邮件),为什么会出现此错误?

jquery - multipart/form-data 使用什么编码?是否可以使用 JQuery 对数据进行编码?

java - apache.commons.fileuploads 一次解析后未解析请求

python - 使用 python 的网络服务器

python私有(private)属性

python - 在 Python 中连接 file.write() 中的字符串?

python - 使用 lxml.etree 解析本地文件

python - 使用 Python 生成 k-NN 中二元分类的数据集