CURLOPT_POSTFIELDS格式

时间:2016-06-23 03:51:50

标签: php api curl

我正在尝试将json字符串传递给curlopt_postfield。

curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);

我有一个工作硬编码的例子。但是我无法让它变得动态。

$test = "84560";
$data = "{\"id\":\"" .$test. "\"}";
$data2 = "{\"id\":\"84560\"}";
curl_setopt($ch, CURLOPT_POSTFIELDS, $data2);

为什么$ data2工作且$ data失败? 我已经尝试过json编码,utf8编码,以及许多逃避引号的变种都无济于事。我错过了什么?我不会仅仅因为NULL响应而得到错误。

这是完整的代码。仍然无法使其正常工作。任何其他建议,因为我已经尝试了我发现的一切。

$test = "84560";
$data = "{\"id\":\"" .$test. "\"}";
$data2 = "{\"id\":\"84560\"}";

$result2 = getJson("results.json?", $data2);

function getJson($endpoint, $postfields) 
{
    $URL = "https://app.mobilecause.com/api/v2/reports/". $endpoint;

        $ch = curl_init();
        $headers = [];
        $headers[] = "Authorization: Token token=\"[token goes here]\"";
        $headers[] = "Accept: application/json";
        $headers[] = "Content-Type: application/json";
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        curl_setopt($ch, CURLOPT_URL, $URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        $result = curl_exec($ch);
        if (curl_errno($ch)) 
        {
            echo 'Error:' . curl_error($ch);
        }
        curl_close ($ch);;
        return $result;
    }

1 个答案:

答案 0 :(得分:2)

你应该试试:

<?php
$data = array('id' => 84560);
$json = json_encode($data);
echo $json; // Will print { id: 84560 }