php捕获对文件的回调响应

时间:2016-01-24 20:59:16

标签: php json api

我正在使用来自SMS提供商的API(是的,它需要是这个提供商,所以我坚持使用它),但他们的文档还有很多不足之处,包括示例和支持。

我正在试图找出他们不同的回调,但我不知道他们究竟发回了什么。有没有办法编写一个PHP脚本来捕获任何传入的文件响应。响应看起来像这样(但不是唯一的),所以我想发送几个电话(正确和错误)并记录我得到的。

{
   "api_job_id":"4c2478d3-aebb-4510-8720-1b479d01cfd5",
   "client_job_id":"abc123456",
   "data":[
      {
         "type":"SMS",
         "message_id":"14182390945378443202",
         "status":"SENT",
         "timestamp":1422885283,
         "micro_timestamp":1422885283477,
         "to":"XXXXXXXXX",
         "from":"CompanyA",
         "client_message_id":"2",
         "error_code":0
      }
   ]
}

2 个答案:

答案 0 :(得分:0)

对于任何想要捕获调试请求等的人,我只是巧合地找到了Hookbin.com。

答案 1 :(得分:0)

这可能就是你要找的东西:

<?php

$logfile = dirname(__FILE__).'/SMScallback.log';  // change if necessary

foreach($_GET as $key => $value) {
    $header = 'callback_key: "' . $key . '", received: ' . gmdate('Y-m-d H:i:s') . ' (UTC)'. ', contents:' . PHP_EOL;
    if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
        $tmparray = (array)json_decode($value);
        $json = json_encode($tmparray, JSON_PRETTY_PRINT);
    } else  {
        $json = $value;
    }

    file_put_contents($logfile, $header . $json. PHP_EOL . PHP_EOL, FILE_APPEND);
    echo "Saved to file '$logfile'";
}

// http://www.example.com/smscallback.php?callbck1={"api_job_id":"4c2478d3-aebb-4510-8720-1b479d01cfd5","client_job_id":"abc123456","data":[{"type":"SMS","message_id":"14182390945378443202","status":"SENT","timestamp":1422885283,"micro_timestamp":1422885283477,"to":"XXXXXXXXX","from":"CompanyA","client_message_id":"2","error_code":0}]}

?>

该脚本接受任何GET参数。它将GET密钥,当前日期和时间(UTC)以及GET参数的值写入(附加)到服务器上的日志文件中。
注意:Web服务器必须具有日志文件的写权限。