通过php& amp;发布JSON编码数据卷曲

时间:2015-01-22 14:14:26

标签: php json curl

我无法通过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) { } 

我的代码中存在什么问题?

2 个答案:

答案 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?