PHP cURL JSON对象格式问题

时间:2015-01-16 19:52:32

标签: php json curl

我遇到了使用PHP中的curl_setopt函数进行格式化的问题。我基本上是在尝试重新创建下面的cURL请求,但我的代码从服务器返回一个错误的请求。我很确定它与格式不佳有关,但我无法弄清楚我哪里出错了。

//This code returns the data back successfully
    curl -H "Content-Type: application/json" -d '{"bio_ids": ["1234567"]}' http://localhost:9292/program

    <?php //This code returns a bad request from the server
    $bio = array('bio_ids'=>'1234567');
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => 'http://localhost:9292/program',
        CURLOPT_POST => 1, // -d
        CURLOPT_POSTFIELDS => $bio,
        CURLOPT_HTTPHEADER => array('Content-Type: application/json'), // -H
    ));
    $resp = curl_exec($curl);
    curl_close($curl);

    ?>

2 个答案:

答案 0 :(得分:2)

有两个问题:

您需要确保$bio的结构符合您预期的结果,因此$bio声明必须是:

$bio = array('bio_ids' => array('1234567'));

其次,在将此数据结构发送到服务器之前,您需要json_encode

CURLOPT_POSTFIELDS => json_encode($bio),

答案 1 :(得分:1)

<?php //This code returns a bad request from the server
    $bio = array('bio_ids'=>'1234567');
    $bio = json_encode($bio);
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => 'http://localhost:9292/program',
        CURLOPT_POST => 1, // -d
        CURLOPT_POSTFIELDS => $bio,
        CURLOPT_HTTPHEADER => array('Content-Type: application/json'), // -H
    ));
    $resp = curl_exec($curl);
    curl_close($curl);

    ?>