我无法通过PHP和&amp ;;发送JSON编码数据卷曲
我的发件人代码是:
$id = 1;
$txt = "asdsad";
$txt2 = "baszama";
$data = array("id" => "$id", "txt" => "$txt", "txt2" => "$txt2");
$data_string = json_encode($data);
$ch = curl_init('index.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
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))
);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
的index.php:
var_dump($_REQUEST);
我收到的数据:
array(0) { }
我的代码中存在什么问题?
答案 0 :(得分:1)
在构建GET / POST / REQUEST超全局时,PHP在提交的数据中需要key=value
对。您正在发送一个没有密钥的裸字符串。没有关键,超级全球没有数组条目。
尝试
curl_setopt($ch, CURLOPT_POSTFIELDS, "foo=$data_string");
$_REQUEST['foo']
或者,由于您通过POST发送,可以使用
$json = file_get_contents('php://input');
并简单地阅读原始文本。
答案 1 :(得分:0)
如果您以JSON字符串形式发送请求,则必须将其作为字符串读取:
$json = json_encode(file_get_contents('php://input'));
您可以在此处找到更多信息:How to get body of a POST in php?