4

我有这个将 json 发送到 REST API 的 cURL 函数:

$url = "https://server.com/api.php";
$fields = array("method" => "mymethod", "email" => "myemail");

$result = sendTrigger($url, $fields);

function sendTrigger($url, $fields){  
    $fields = json_encode($fields);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=UTF-8"));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curlResult["msg"] = curl_exec($ch);
    $curlResult["http"] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $curlResult;
}

在服务器上,我有以下代码:

$data = json_decode($_REQUEST);
var_dump($data);
exit();

当我执行 cURL 命令时,它返回给我:

Warning:  json_decode() expects parameter 1 to be string, array given in

怎么样?

谢谢。

4

2 回答 2

11

如果您不使用其中一种表单编码的内容类型,PHP 不会将数据填充到$_POST.

您需要从 PHP 原始输入中获​​取 JSON 有效负载,如下所示:

$json = file_get_contents('php://input');
$array = json_decode($json);
于 2013-10-03T21:01:31.837 回答
0

在 PHP中 json_decode接受一个字符串并将其转换为一个对象。该$_REQUEST变量是一个全局变量,包含 、 和 的内容$_GET$_POST$_COOKIE参阅PHP 参考)。很可能,您的代码中有输入错误,并且您可能打算$request使用$_REQUEST.

于 2013-10-03T20:57:52.407 回答