【问题标题】:Converting cURL statement to HTTR将 cURL 语句转换为 HTTR
【发布时间】:2021-08-17 15:41:41
【问题描述】:

我有一个用 cURL 编写的语句,看起来像这样:

curl --request POST \
     --url https://api.secure.com/v1/Test \
     --header 'Accept: application/json' \
     --header 'Authorization: Basic 123456789==' \
     --header 'Content-Type: application/json' \
     --data '{"playerId":12827}'

我知道如何分配它,看起来像这样:

POST(
  'https://api.secure.com/v1/Test',
  accept_json(),
  add_headers(Accept = 'application/json',
              Authorization = APIKey)
)

但是我迷路并且在 httr 包文档中找不到问题的地方是如何处理数据标志 (--data '{"playerId":12827})

最好的方法是什么?

【问题讨论】:

  • 您是否尝试将参数body = list(playerId = 12827) 添加到POST 调用中?
  • 我应该在哪里添加?
  • 作为POST 的参数,在最后一个大括号之前说
  • ???我上面的帖子中没有大括号
  • 对不起,我的意思是括号

标签: r httr


【解决方案1】:

您需要实际发送数据并设置正确的内容类型。您可以使用content_type_json()body= 参数来执行此操作(将您的数据作为列表传递,POST 会为您将其转换为 JSON)。

APIKey <- "123456789=="
POST(
  'https://api.secure.com/v1/Test',     # --url https://api.secure.com/v1/Test \
  accept_json(),                        # --header 'Accept: application/json'
  content_type_json(),                  # --header 'Content-Type: application/json'
  add_headers(Authorization = APIKey),  # --header 'Authorization: Basic 123456789=='
  encode = "json",
  body=list(playerId = 12827)           # --data '{"playerId":12827}'
)

【讨论】:

  • 感谢您的回复,但我只是尝试运行它并得到以下回复:Response [https://api.secure.com/v1/Test] Date: 2021-08-17 17:02 Status: 400 Content-Type: application/json; charset=utf-8 Size: 144 B { "errors": [ { "code": "INVALID_PARAMETER", "text": "The body of the request is null or cannot be parsed." } ]
  • 尝试同时添加encode ="json" 如上所述。如果没有查看 API 端点的任何文档,很难判断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多