【问题标题】:cURL POST request not working as python requests equivalentcURL POST 请求不能作为等效的 python 请求工作
【发布时间】:2020-10-04 05:01:14
【问题描述】:

我有一个curl POST 请求,它按预期在终端中返回一个 CSV。 RJMetrcis documentation 中提供了以下格式(请参阅“导出图形数据”)。这是 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 借助之前的 post 进行复制时,会返回错误:

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 格式(当 bash 命令中省略 -d 时,会引发相同的错误)。但是,这两个请求在语法上是相同的。这里的 Python 问题可能是什么?有没有首选的参数传递方法?

【问题讨论】:

    标签: python curl post python-requests


    【解决方案1】:
    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")
    

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多