2013-11-26 28 views
0

我一直在努力解决以下问题几天。我希望从某个第三方公司收到有关某些实时事件的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

这里没有很多在这里去 - 谁知道客户端实际发送 - 但这里有一个想法:

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

我建议在How to get body of a POST in php?上查看答案,看看是否有助于揭示这个问题。

+0

这就是它!非常感谢! – user2292539

相关问题