处理来自第三方的POST数据

时间:2013-11-26 20:41:11

标签: php http post

我几天来一直在努力解决以下问题。对于某些实时事件,我应该从第三方公司接收POST数据。我一直与他们联系,为什么我的剧本没有看到任何东西。不幸的是,它们不那么有用,只是告诉我“它适用于其他所有人”。

我在对网络进行一些研究后设置了一个简单的PHP脚本,但它始终没有显示帖子数据。这不是我的专业领域,所以我可能会遗漏一些明显的东西。

以下是他们提供的唯一文件: 此API将在每个成功事件发送所有转换数据时发送实时http请求。数据通过http POST方法发送,数据采用JSON格式。

这是我的脚本,现在试图将其记录到文件中。该文件已创建,我看到了请求的IP地址,但输出在发布数据方面是空的。

    ob_start();
    echo "Request from :" . $_SERVER[REMOTE_ADDR];
    echo "print_r:".print_r($_POST,true);
    if(array_key_exists('app_id', $_POST))// me attempting to access a specific key they claim is in the post data
    {
      echo "app id = " . $_POST['app_id'];
    }
    //I also tried both of these and neither output anything
    //foreach ($_POST as $key => $value) //idea 1
    foreach($_POST as $item) //idea 2
    {
        //echo "key=".$key." value=".$value; //idea 1 log
        echo "next=";//idea 2 log
        echo $item;
    }
    $contents = ob_get_flush();
    file_put_contents("log.txt",$contents,FILE_APPEND);

1 个答案:

答案 0 :(得分:1)

这里没有太多东西 - 谁知道客户端实际发送了什么 - 但这是一个想法:

POST只是一个HTTP命令。 POST的主体传统上是一个表单中的一系列键值对,但实际上并不是必需的。远程客户端可能会向您的服务器发出POST请求,然后只在请求正文中提供JSON blob,这将无法成功解析为$ _POST数组。

我建议在How to get body of a POST in php?探索答案,看看是否有助于解决这个问题。