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条)

报告相同问题?

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch