如何使用PHP将数据发布到firebase?

时间:2016-12-08 04:56:34

标签: php curl firebase firebase-realtime-database

我正在使用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."我是如何解决这个问题的?

2 个答案:

答案 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-urlencodedContent-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)));