如何读取以json格式从远程服务器发送的$ _POST字段?

时间:2014-01-20 16:53:16

标签: php json

这是我从服务器收到的通知代码,表明我的工作已完成。它以JSON格式返回$_POST字段,例如xyx。我尝试了各种组合,甚至包裹在json_decode中,但它返回NULL

我还想从POST访问一些值,以便进一步处理成数据库。

<?php
ini_set('display_errors', 'Off');
echo "notification is arriving ...";
sleep(2);

//echo $_POST['message'];
//print_r($_POST,true);

$json = file_get_contents("php://input");
$obj = json_decode($json);
var_dump($obj);  //CHECKING
?>

示例输出:

  

通知到达...... NULL

编辑: AF_ var_dump($ _ POST);

  

array(2){[“xyw”] =&gt; string(2262)“{”ok“:”ASSEMBLY_COMPLETED“,”message“:”程序集已成功完成。“,”....和json输出的其余部分。

var_dump(“php:// input”)之后

  

string(11)“php:// input”..如果我删除引号..没什么。空白页。

1 个答案:

答案 0 :(得分:1)

以下一行:

$json = file_get_contents("php://input");

将返回ARRAY,而不是json对象。因此,以下一行:

$obj = json_decode($json);

正在尝试解码一个数组,它会失败(因为$ json的类型是Array而不是json对象。

希望这能回答你的问题。

修改

如果您希望脚本返回json对象,则应使用json_encode,然后回显它。

EDIT2

要阅读,请按以下步骤操作:

$json = file_get_contents("php://input");
$myVar1 = $json['xyw'];
echo $myVar1;

EDIT3

我已经看到你粘贴的输出,我看到它是一个json字符串,你可以按如下方式编码:

$post= file_get_contents("php://input");
$json = json_encode($post['xyw']);

希望这有帮助。