douzhong3038 2016-01-24 20:59
浏览 33
已采纳

php捕获对文件的回调响应

I'm using an API from an SMS provider (yes, it needs to be this provider so I'm stuck with it), but their documentation leaves a lot to be desired, and that includes examples and support.

I'm trying to figure out their different callbacks however I have no idea what exactly they're sending back. Is there a way to write a PHP script that captures any incoming responses to file. The responses look like this (but not exclusively), so I wanna send a couple calls (both correct and with errors) and record what I get.

{
   "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条回答 默认 最新

  • dongluanban3536 2016-01-24 22:43
    关注

    This might be what you are looking for:

    <?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}]}
    
    ?>
    

    The script accepts any GET parameters. It writes (appends) the GET key, the current date and time (UTC) plus the values of the GET parameters into a log file on the server.
    Note: The web server must have write privileges for the log file, of course.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多