You need to enable JavaScript to run this app. 使用R的curl包转换OriginStamp接口POST cURL请求为R代码
优惠活动
大模型
产品
解决方案
定价
更多

使用R的curl包转换OriginStamp接口POST cURL请求为R代码

R语言curl包实现JSON格式POST请求的方法

先修正现有代码的小问题

你之前写的请求头配置里,accept字段的值开头多了一个空格(写成了" application/json"),这类多余空格很容易触发服务端的请求头校验失败,需要删掉空格修正为标准的"application/json"。

请求体绑定逻辑

这个接口要求的是application/json格式的原始请求体,完全不需要用到form_data相关方法——表单类方法仅适配application/x-www-form-urlencoded、multipart/form-data的提交场景,会自动改写请求头格式,和本次接口要求不匹配。
绑定JSON请求体只需要通过handle_setopt给curl句柄补充两个关键配置:

  • 显式声明请求方法为POST
  • 将序列化完成的JSON字符串作为请求正文传入

完整可运行代码

# 提前安装依赖包:install.packages(c("curl", "jsonlite"))
library(curl)
library(jsonlite)

# 替换为你自己的API密钥
api_key <- "xxx-xxx-xxx-xxx-xxxx"
base_url <- "https://api.originstamp.com/v3"

# 拼接完整接口地址
url <- paste(base_url, "timestamp", "proof", "url", sep = "/")

# 创建新的curl句柄
h <- new_handle()

# 设置请求头
handle_setheaders(
  h,
  accept = "application/json",
  Authorization = api_key,
  "content-type" = "application/json"
)

# 构造请求参数,和原始bash命令的-d参数完全对齐
req_body <- list(
  currency = 0,
  hash_string = "2c5d36be542f8f0e7345d77753a5d7ea61a443ba6a9a86bb060332ad56dba38e",
  proof_type = 1
)
# 将R列表序列化为标准JSON字符串,自动处理转义,避免手拼字符串的格式错误
req_json <- toJSON(req_body, auto_unbox = TRUE)

# 把POST方法和JSON请求体绑定到句柄上
handle_setopt(
  h,
  post = TRUE,
  postfields = req_json
)

# 发起请求
response <- curl_fetch_memory(url, h)

# 解析返回内容为R可读的列表结构
resp_data <- fromJSON(rawToChar(response$content))

容易踩的坑

  • 不要调用handle_setform方法,该方法会自动把Content-Type改写为表单类型,直接导致服务端解析JSON失败
  • 给postfields传值时必须是序列化好的JSON字符串,不能直接传R原生列表,否则会被自动转成表单字段格式
  • 必须显式设置post = TRUE,否则即使传了请求体,句柄也会默认按GET方法发起请求

内容的提问来源于stack exchange,提问作者Rainer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 20:06:02