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

TradingView Widget发送的POST请求自定义PHP API无法接收求助

问题原因与解决方案

你的问题属于PHP接收POST请求的常见场景,核心原因和解决方法如下:

1. 直接原因:JSON格式请求不会填充$_POST

PHP的$_POST超全局变量仅能解析Content-Type为application/x-www-form-urlencoded或multipart/form-data的请求,你测试脚本里发送的是application/json格式的序列化数据,自然不会被写入$_POST,这是PHP的原生设计,不是BUG。
你已经在代码中读取了php://input,只需要对读取到的内容做JSON反序列化即可拿到参数,示例代码:

// 第二个参数传true表示返回关联数组,不传则返回stdClass对象
$postData = json_decode(file_get_contents('php://input'), true);

2. 潜在问题:重定向导致POST数据丢失

你提到请求路径和实际目录存在拼写差异,且访问时浏览器会自动补全路径:

请求地址为:example.com/1.0/chart,实际代码路径为www/1.0/charts/index.php,测试时地址会自动补全为 example.com/1.0/charts/?client=devtg&user=2
这种自动补全一般是服务器配置了301/302重定向规则,而POST请求经过重定向时,默认会被转为GET请求,同时丢失全部POST body。
排查和解决方法:

  • 用浏览器开发者工具或者抓包工具查看请求的响应状态码,如果是301/302,直接将请求地址改为和实际路径完全匹配的完整地址(拼写一致、带末尾斜杠)
  • 也可以修改Nginx/Apache的重定向规则,配置重定向时保留POST请求参数

3. 快速验证方法

你可以在PHP脚本最顶部增加两行调试代码,确认请求数据是否正常到达服务端:

// 打印请求的Content-Type
var_dump($_SERVER['CONTENT_TYPE']);
// 打印原始请求body内容
var_dump(file_get_contents('php://input'));

如果可以打印出完整的JSON内容,说明TradingView的请求已经正常发送,按上述第一个方案解析即可;如果打印为空,再进一步排查服务器配置、跨域规则等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:45:00