如何解决我如何知道我是否收到了来自 Webhook 对我的 PHP 文件的 POST 请求?
我的文件 request.php 向 API 发出 POST 请求并立即得到响应,表示请求已获批准。
POST 请求发送一个回调 url,API 会将 JSON 响应发送到该回调 url。我使用receive.php 作为回调网址。
当我使用唯一的 webhook.site/id 作为回调 url 时,我可以看到 JSON 响应。所以我知道 API 请求有效。
我的问题是每次 POST 请求后 receive.php 都是空的。为什么receive.php没有JSON响应?
在我的文件 receive.php 上,我有以下代码:
$body = file_get_contents('php://input');
$webhook = json_decode($body);
我尝试过使用 print_r、var_dump、echo 等显示响应
request.php 上的代码:
<?php
$curl = curl_init();
curl_setopt_array($curl,array(
CURLOPT_URL => 'https://api-url-with-my-key',CURLOPT_RETURNTRANSFER => true,CURLOPT_ENCODING => '',CURLOPT_MAXREDIRS => 10,CURLOPT_TIMEOUT => 0,CURLOPT_FOLLOWLOCATION => true,CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_POSTFIELDS =>'{
"pno": "number","callbackUrl": "https://example.com/receive.php","ipAddress": "8.8.8.8","refID": "text123456"
}',CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',),));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
在 chrome 中,我可以看到以下警告“资源被解释为文档,但使用 MIME 类型应用程序/json 传输:”
编辑:
来自 API 的响应:
{
"result": "completed","orderRef": "98308bf7-c8be-4da6-8491-9f599d437de9","pno": "number","name": "a name","checksum": "number","certStartDate": "2021-01-28","refID": ”text123456"
}
解决方法
如果您说 webhook 有问题,那么需要调查的是当其他 API 调用 https://example.com/receive.php
时会发生什么。这是一个单独的请求,具有单独的负载。此类请求将在稍后发生,receive.php
中的 PHP 代码将处理它。
由于这将是无人值守的,您可能需要让 receive.php
对接收到的数据执行一些操作,以便您以后可以查看它,例如将其存储在文件或数据库中,或通过电子邮件发送给自己。回显它不会有太大用处,因为只有远程 API 才能看到该响应。
我现在已经解决了这个问题。网络主机有防火墙,我无法管理或看到,添加 API IP 地址后一切正常。
一周前我确实打电话给他们要求这个,但他们可以帮助我。
此代码收集响应。
$body = file_get_contents('php://input');
$webhook = json_decode($body);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。