1

当远程服务向我的服务器发送请求时,我需要知道如何让 PHP Storm 捕获 HTTP POST 请求。背景:

我正在使用名为 Clickatel 的 SMS 服务。当客户回复短信时,Clickatel 会向我编写的名为 sms_response.php 的脚本发送回复。我遇到的问题是我不知道他们发送的内容。我想使用 PHP 调试来捕获 POST 请求。理想情况下,我可以看到整个消息。我知道我编写的脚本会被调用,因为它将硬编码消息记录到日志文件中。我无法阅读内容,因为我不知道要发送的变量。

也许一个更简单的问题是:当我不知道变量的名称时,如何解析 HTTP POST 的所有内容。$_POST 和 $_GET 变量似乎为空。我还尝试使用 foreach 循环打印 $_SERVER 变量的值,但这似乎也是空的。

有任何想法吗?我在胡思乱想什么?

4

1 回答 1

1

好的。我找到了答案。花了一点时间,但我意识到我看了一些东西。

1) 我的原始代码使用的是 PHP 5.6。我正在使用 $HTTP_RAW_POST_DATA 捕获代码,但是当 PHP 7.0 出现时,它已经贬值了。

2) 要获取响应的内容,我必须使用 file_get_contents("php://input");

如果这有帮助,我使用以下代码查看响应。现在我知道内容并且知道如何获取数据以便解析它,这可能会有所帮助。

$text = file_get_contents("php://input");
$textfile = "/var/www/html/openemr-500/sms.log";
$myfile = file_put_contents($textfile, $text.PHP_EOL , FILE_APPEND | LOCK_EX);

响应是一个我已经知道如何解析的 json 字符串。希望这可以帮助人们。

于 2018-03-05T13:40:36.213 回答