python - cURL POST 请求不能作为等效的 python 请求工作
问题描述
我有一个curl
POST 请求,它按预期在终端中返回 CSV。RJMetrcis文档中提供了以下格式(请参阅“导出图形数据”)。这是 bash 中的 curl 请求:
curl --data-raw "format=csv&includeColumnHeaders=1" -H "X-RJM-API-Key: myapikey" https://api.rjmetrics.com/0.1/figure/12345/export
或者,使用-d
代替--data-raw
也可以
但是,在使用Python 的前一篇文章的帮助下进行复制时,会返回错误:requests
url = "https://api.rjmetrics.com/0.1/figure/12345/export"
payload = "'{\"format\":\"csv&includeColumnHeaders=1\"}'"
headers = {
'X-RJM-API-Key': 'myapikey'
}
response = requests.request("POST", url, headers=headers, params=payload)
response.text
'{"Error":"Invalid Argument: CSV is currently the only supported format for SQL Reports"}'
这是 API 返回的特定错误,指示未请求 CSV 格式(当-d
bash 命令被忽略时,会引发相同的错误)。但是,这两个请求在语法上是相同的。这里的 Python 问题可能是什么?是否有传递参数的首选方法?
解决方案
import requests
data = {
'format': 'csv',
'includeColumnHeaders': 1
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0',
'X-RJM-API-Key': 'yourapi'
}
def main(url):
r = requests.post(url, data=data, headers=headers)
print(r)
main("https://api.rjmetrics.com/0.1/figure/12345/export")
推荐阅读
- codenameone - 代号一 - 设计师自动放大图像
- r - 如何从 OpenCPU R 函数内部设置自定义 HTTP 状态代码
- selenium - 构建你自己的 SeleniumHQ/docker-selenium 的 docker 镜像
- orientdb - 迁移 dockerized nexus 3.from 不同虚拟机的问题
- javascript - HTML 显示更多按钮不适用于所有移动浏览器
- highcharts - 间距底部的 Highstock 轴错误 = 0
- java - 访问者模式——先访问超类再访问类
- javascript - inView 没有定义lazy-instant-render.js
- asynchronous - 当故障区域中有 SQS 消息排队时,多区域故障转移的最佳实践是什么?
- node.js - 为什么在命令提示符中使用关键字 npm 时 npm 没有响应