我正在使用Laravel框架并与Firebase数据库集成。我尝试将以下数据发布到Firebase,但它无法正常工作。
$url = "https://test.firebaseio.com/test_api/types.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "id=6");
$jsonResponse = curl_exec($ch);
if(curl_errno($ch))
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
我不知道问题出在哪里。而且我也尝试使用邮递员这样做,它说跟随错误。 "error": "Invalid data; couldn't parse JSON object, array, or value. Perhaps you're using invalid characters in your key names."
我是如何解决这个问题的?
答案 0 :(得分:5)
尝试按照一个
$data = '{"id": "6"}';
$url = "https://test.firebaseio.com/test_api/types.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$jsonResponse = curl_exec($ch);
if(curl_errno($ch))
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
Firebase接受json对象,您必须将$data
发布为json对象。您可以使用Content-Type: application/x-www-form-urlencoded
或Content-Type: text/plain
答案 1 :(得分:1)
id = 6不是有效的JSON。 {“id”:6}可能就是你的意思。
试
$json='{"id":6}';
curl_setopt_array($ch, array(
CURLOPT_POST=>1,
CURLOPT_HTTPHEADER=>array(
'Content-Type: application/json',
'Content-Length: ' . strlen($json)
),
CURLOPT_POSTFIELDS=>$json
));
编辑:或者,如果网站接受正常的POST multipart / form-data / application / x-www-form-urlencoded编码,您可能需要,对于multipart / form-data编码:
curl_setopt($ch, CURLOPT_POSTFIELDS, array('id'=>6));
for application / x-www-form-urlencoded encoding:
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('id'=>6)));