You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Python版Telraam API请求转写为R代码后无法运行,求排查

Telraam API请求R代码的错误分析与修正

你的R代码存在几个关键问题,导致请求无法正常工作:

核心错误点

  • 请求方法不匹配:原Python代码使用POST请求提交参数,但你的R代码用了GET方法,而Telraam的该API接口仅接受POST请求。
  • URL路径错误:目标API地址应为https://telraam-api.net/v1/reports/traffic,你遗漏了路径中的/reports/traffic部分。
  • 参数传递方式错误:Python里的body是POST请求的JSON请求体,并非URL查询参数(query),不能用query参数传递,需将参数转为JSON格式放在body中。
  • 数据解析遗漏层级:Python代码提取了响应中的json['report']部分转成DataFrame,你的R代码直接解析整个响应,未对应到report节点。

修正后的R函数

library(httr)
library(jsonlite)
library(tibble)
library(readr)

get_telraam_data <- function(id = "9000001463",
                             time_start = "2022-10-01 00:00:00Z",
                             time_end = "2022-10-02 00:00:00Z",
                             level = "segments",
                             format = "per-hour",
                             token = "***My_API-Key***") {
  # 构造请求体参数
  request_body <- list(
    id = id,
    time_start = time_start,
    time_end = time_end,
    level = level,
    format = format
  )
  
  # 发送POST请求
  res <- POST(
    url = "https://telraam-api.net/v1/reports/traffic",
    body = request_body,
    encode = "json",  # 自动将请求体转为JSON格式
    add_headers("X-Api-Key" = token)
  )
  
  # 检查请求状态,失败则抛出错误
  stop_for_status(res)
  
  # 解析响应并提取report节点,转为结构化数据
  response_content <- content(res, as = "text", encoding = "UTF-8") %>%
    fromJSON(flatten = TRUE) %>%
    .[["report"]] %>%  # 对应Python中的json['report']
    as_tibble() %>%
    readr::type_convert()
  
  # 保存为CSV文件,与原Python脚本功能对齐
  write_csv(response_content, "test.csv")
  
  return(response_content)
}

补充说明

  • 使用POST方法匹配API要求,替代原代码的GET。
  • 通过encode = "json"自动处理JSON格式的请求体,无需手动转义字符串。
  • 明确提取响应中的report节点,保证数据结构与Python代码输出一致。
  • 新增CSV保存步骤,完全复现原Python脚本的完整功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:45:36