<h2>将<code>file-like object</code>用于<code>files</code>会导致<code>multipart/form-data</code>内容类型</h2>
<p>让我们准备好电话所需的一切,从“平常”开始:</p>
<pre><code>>>> import requests
>>> data = {"myparam": "1234"}
>>> headers = {'User-Agent': 'Mozilla 5.0','referer':'https://myreferer'}
</code></pre>
<p>强制<code>requests</code>使用“multipart/formdata”的诀窍是至少给它一个类似于
对象。在</p>
^{pr2}$
<p><code>buff</code>现在是我们可以作为<code>files</code>参数值传入的类似文件的对象。在</p>
<pre><code>>>> req = requests.post(url, data=data, headers=headers, stream=True, files=buff)
>>> print req.text
{
"args": {},
"data": "",
"files": {},
"form": {
"myparam": "1234"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "130",
"Content-Type": "multipart/form-data; boundary=0b3bbec1f5c844a1b7377aacfe701f02",
"Host": "httpbin.org",
"Referer": "https://myreferer",
"User-Agent": "Mozilla 5.0",
"X-Request-Id": "988a0467-1c32-45aa-a75c-fba5aa8d632e"
},
"json": null,
"origin": "85.160.45.204",
"url": "http://httpbin.org/post"
}
</code></pre>
<p>如果要使用自签名证书与<code>https</code>通信,请使用<code>verify=False</code>:</p>
<pre><code>>>> req = requests.post(url, data=data, headers=headers, stream=True, files=buff, verify=False)
</code></pre>
<p>关于<code>requests.request</code>的帮助还注意到,<code>verify</code>的值可能是“一个CA包路径”,因此
无法显式确保服务器正在使用预期的自签名证书。但是
我从来没有尝试过。在</p>