我必须从cURL调用发送一个json响应。 用户向file.php发送了一个“test”变量。
在我的php文件中,我使用此代码
$arr = array($arr = array('test' => 'ok'));
echo json_encode($arr);
这是cURL电话
curl --request POST http://www.domain.com/WS/file.php -d '{ "test" : "12341234123412342" }'
以下是答案
[{"test":null}]
获取de POST变量并在我的php文件中处理它的好方法是什么?
由于
修改
以防万一,问题来自cURL调用。这是正确的语法:
curl -H "Content-Type: application/json" -X POST -d "{\"test\":\"12341234123412342\"}" http://www.domain.com/WS/file.php
答案 0 :(得分:0)
你的问题有点令人困惑:)
所以你的用户在file.php中发送一个变量 你必须卷曲那个变量吗?
为什么不只是
curl --request POST http://www.domain.com/WS/file.php -d '{ "test" : "$_POST['USER_INPUT_VALUE']" }'
还是我错过了什么?
答案 1 :(得分:0)
感谢您的帮助。
你说得对,可能会令人困惑。我必须添加一些新的细节并提供一个更好的例子。
用户在文件test_curl.php中执行该脚本:
// test_curl.php
$url = "http://www.domain.com/WS/file.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
$data = array(
'test' => '12345'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$contents = curl_exec($ch);
echo $contents;
curl_close($ch);
这是file.php
// file.php
$arr = array($arr = array('test' => $_POST['test']));
echo json_encode($arr);
我接收了POST变量并且它有效。这是$ content收到的test_curl.php
{"test" => "12345"}
新事实,它适用于test_curl.php。我得到了很好的答案,但是在命令行中使用该代码时...
curl --request POST http://www.domain.com/WS/file.php -d '{ "test" : "12345" }'
......我有这个答案:
[{"test":null}]
最后,我的问题是当我在命令行中调用时,响应为 null 的原因?
答案 2 :(得分:0)
那不会奏效。
在您的帖子数据中,您要发送json/application
内容类型。在服务器内部,您期望来自名为test
的变量的内容,该变量应仅存在于普通形式的键值主体中,而实际情况并非如此。
因此,您需要json_decode
直接发布数据内容的原始主体,然后访问其中的test
密钥,如下所示:
$raw_body = file_get_contents('php://input');
$json = json_decode($raw_body);
$arr = array($arr = array('test' => $json['test']);
echo json_encode($arr);