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

使用Post请求调用Ogre时返回"No JSON provided"错误排查

问题排查与解决方案

核心问题分析

你遇到的"No json provided"错误,主要是因为请求数据的编码格式不符合Ogre接口预期,同时代码中存在一处语法错误。

具体修复步骤

1. 修正代码中的拼写错误

你的代码里有一行明显的拼写失误:

cucurl_execrl_setopt($ch, CURLOPT_STDERR, $streamVerboseHandle);

需改为:

curl_setopt($ch, CURLOPT_STDERR, $streamVerboseHandle);

这个错误会导致curl日志无法正常输出,还可能干扰请求的正常执行。

2. 调整POST数据的编码格式

当用CURLOPT_POSTFIELDS传递数组时,PHP curl默认会以multipart/form-data格式发送请求,但Ogre的convertJson接口更适配application/x-www-form-urlencoded表单格式或直接JSON请求体。

方案一:使用URL编码的表单数据

将数组转换为URL编码字符串后发送:

// 替换原CURLOPT_POSTFIELDS设置
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

方案二:直接发送JSON字符串(推荐)

跳过数组包装,直接传递GeoJSON字符串并设置正确请求头:

// 替换原params和POSTFIELDS相关代码
curl_setopt($ch, CURLOPT_POSTFIELDS, $geojson);
// 添加Content-Type请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

3. Postman请求的对应调整

用Postman测试时需匹配对应格式:

  • 表单模式:选择x-www-form-urlencoded,添加键json,值为完整GeoJSON字符串;
  • Raw模式:选择JSON类型,请求体直接填写GeoJSON内容(无需包裹json键),同时确保Header中Content-Type设为application/json。

为什么在线工具可以正常工作?

Ogre在线工具的表单默认采用application/x-www-form-urlencoded格式提交数据,和你curl代码默认的multipart/form-data格式不同,因此接口能正确识别并处理请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:11:32