<p>您的邮递员请求是一个JSON主体。只需在Python中复制相同的主体。Python代码没有发送JSON,也没有发送与Postman示例相同的数据。</p>
<p>首先,通过<code>data</code>参数发送字典会将字典编码为<code>application/x-www-form-urlencoded</code>格式,而不是JSON格式。其次,您似乎发送了一个过滤器。</p>
<p>以下代码完全复制您的邮递员邮件:</p>
<pre><code>import requests
filters = {"filter": {
"filters": [{
"field": "RCA_Assigned_Date",
"operator": "gte",
"value": "2017-05-31 00:00:00"
}, {
"field": "RCA_Assigned_Date",
"operator": "lte",
"value": "2017-06-04 00:00:00"
}, {
"field": "T_Subcategory",
"operator": "neq",
"value": "Temporary Degradation"
}, {
"field": "Issue_Status",
"operator": "neq",
"value": "Queued"
}],
"logic": "and"
}}
url = "http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets"
response = requests.post(url, json=filters)
</code></pre>
<p>注意<code>filters</code>是这里的一个<em>Python</em>数据结构,它被传递给<code>json</code>关键字参数。使用后者可以做两件事:</p>
<ul>
<li>将Python数据结构编码为JSON(生成与原始Postman body值完全相同的JSON值)。</li>
<li>将<code>Content-Type</code>头设置为<code>application/json</code>(就像在为正文选择<code>raw</code>后,通过在下拉菜单中选择<code>JSON</code>选项在Postman配置中所做的那样)。</li>
</ul>
<p><code>requests</code>否则就是一个HTTP API,它不能让Cassandra比任何其他HTTP库做得更多。<code>urllib.request.urlopen</code>代码发送<code>GET</code>请求,并简单地转换为<code>requests</code>,其中:</p>
<pre><code>def get_json():
url = "http://10.61.202.98:8081/T/a/api/rows/cat/ect/tickets"
response = requests.get(url, params={'user_name': user}, timeout=15)
return response.json()
</code></pre>
<p>我删除了<code>if</code>分支,并用<code>params</code>参数替换了它,该参数将键值对字典转换为正确编码的URL查询(将用户名作为<code>user_name</code>键传入)。</p>
<p>注意对响应的<code>json()</code>调用;这负责解码从服务器返回的JSON数据。这仍然需要很长时间,你没有过滤卡桑德拉的数据在这里很多。</p>