我正在关注本教程: https://lornajane.net/posts/2011/posting-json-data-with-php-curl
我要做的是通过CURL POST JSON数据
$url = "http://localhost/test/test1.php";
$data = array("name" => "Hagrid", "age" => "36");
$data_string = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Content-type: application/json", "Content-Length: " . strlen($data_string)));
$result = curl_exec($ch);
var_dump($result);
当我发布纯文本数据时,我能够收到它,但是当我尝试通过JSON时,我无法收到它。
这是我的test1.php
test1.php
print_r($_POST);
print_r($_POST);
任何帮助将不胜感激。 感谢
答案 0 :(得分:2)
当您POST JSON Data
到cURL
时,您必须使用php://input
。您可以像使用它一样使用它:
// get the raw POST data
$rawData = file_get_contents("php://input");
// this returns null if not valid json
return json_decode($rawData, true); // will return array
php://input
是一个只读流,允许您读取原始数据 来自请求机构
PHP超全局$_POST
,只应该包装
application/x-www-form-urlencoded
(简单表单帖子的标准内容类型)或multipart/form-data-encoded
(主要用于文件上传)内容现在是application/json
(或至少没有上述内容),因此PHP的$_POST
-wrapper不知道如何处理(还)。
答案 1 :(得分:2)
$ _POST中没有JSON数据。您需要使用file_get_contents('php://input');
你还需要json_decode它。
$json = json_decode(file_get_contents('php://input'));
var_dump($json);