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

Apigee JavaScript Callout策略返回错误:问题排查与解决

问题原因与解决方法

问题定位

错误提示明确指向代码第5行:var req = new Request(url, operation, headers, payload);,核心原因是Apigee的Request构造函数要求请求体参数必须是字符串类型,但你代码里通过JSON.parse(request.content)把请求体解析成了JavaScript对象(即错误提示中的NativeObject),类型不匹配导致报错。

解决办法

有两种直接有效的修复方式:

方式1:直接使用原始请求体字符串

因为curl发送的请求体已经是JSON格式的字符串,无需提前解析,直接传入Request构造函数即可:

var headers = {'Content-Type' : 'application/json'};
var url = 'https://jsonplaceholder.typicode.com/posts';
var operation = "POST";
var req = new Request(url, operation, headers, request.content);
var calloutResponse1 = httpClient.send(req);
context.session['calloutResponse1'] = calloutResponse1;

方式2:将解析后的对象重新转为JSON字符串

如果业务需要先解析请求体做逻辑处理,处理完成后必须把对象转回JSON字符串再传入Request:

var payload = JSON.parse(request.content);
// 这里可以添加对payload的自定义处理逻辑
var headers = {'Content-Type' : 'application/json'};
var url = 'https://jsonplaceholder.typicode.com/posts';
var operation = "POST";
// 将处理后的对象转为JSON字符串
var reqBody = JSON.stringify(payload);
var req = new Request(url, operation, headers, reqBody);
var calloutResponse1 = httpClient.send(req);
context.session['calloutResponse1'] = calloutResponse1;

验证

修改代码后重新部署代理,用原curl命令测试:

curl -k https://xxxxxx/poc3 -d '{"name": "Apple MacBook Pro 16", "data": "s"}'

即可正常发起POST请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:31:03