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

使用ECL的HTTPCALL调用API时出现错误求助

问题排查与修正方案

核心问题分析

你的ECL代码存在三个关键问题,导致HTTPCALL调用失败但Postman正常:

  • 用XPATH解析JSON响应:目标API返回的是JSON格式数据,但你在HTTPCALL中指定了XPATH('/')解析方式,同时RECORD字段用了{xpath('aqi')}注解,完全不匹配响应格式。
  • Token占位符未替换:URL中的{token}是占位符,未替换为aqicn提供的实际有效Token(Postman中你应该已经替换了正确Token,所以能正常运行)。
  • 响应结构定义错误:API返回的aqi是单个数值,而非数据集,原代码用DATASET(Forcast_Rec)包裹是错误的。

修正后的代码

IMPORT STD;

EXPORT callAirNow() := FUNCTION
/*
This is a API call from https://aqicn.org/
Web Services API https://aqicn.org/json-api/doc/
*/

// 定义匹配JSON响应的记录结构
AQI_Rec := RECORD
    INTEGER aqi {json('data.aqi')}; // 直接映射JSON路径data.aqi
END;

// 替换为你的实际有效Token
actual_token := 'your_real_token_here';
URL := 'https://api.waqi.info/feed/geo:10.3;20.7/?token=' || actual_token;

// 使用JSON解析方式调用API
MakeCall := HTTPCALL(URL, 'GET', 'application/json', AQI_Rec, JSON());

RETURN MakeCall;

END;
output(callAirNow());

关键修改说明

  1. 切换到JSON解析:将HTTPCALL的最后一个参数改为JSON(),同时RECORD字段使用{json('data.aqi')}注解,直接映射API返回的JSON结构。
  2. 替换Token占位符:将{token}替换为你从aqicn获取的实际Token,确保请求身份验证有效。
  3. 调整记录结构:因为API返回的aqi是单个数值,无需用数据集包裹,直接定义包含aqi字段的记录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:35:22