如何使用CURL向API发送数据和从API接收数据?

时间:2014-09-09 06:22:32

标签: php json api curl

我必须制作API。为此,我将使用POST从移动设备收到JSON的数据。我必须处理这些数据,并将响应作为JSON发送回设备。 但我不知道如何获取我将收到的数据。我尝试使用CURL进行一些测试,以了解如何获取此数据,但$_POST始终为空。您能否告诉我如何使用JSON将数据以CURL格式发送到API?如何才能收到这些数据,以便我可以将其作为回复发送回来?

这些是我的测试文件:

curl.php:     

    //set POST variables
    $url = 'http://test.dev/test.php';
    $data = array(
        'fname' => 'Test',
        'lname' => 'TestL',
        'test' => array(
            'first' => 'TestFirst',
            'second' => 'TestSecond'
        )
    );

    //open connection
    $ch = curl_init($url);

    $json_data = json_encode($data);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($json_data))
    );

    // execute post
    $result = curl_exec($ch);

    echo $result;

    //close connection
    curl_close($ch);

test.php的:

var_dump($_POST);

我得到的回应是:

array(0) { }

1 个答案:

答案 0 :(得分:1)

您需要将POST数据作为URL查询字符串或数组传递,问题是您以JSON格式发布数据,但PHP不会自动解析JSON,因此$_POST数组为空。如果你需要它,你需要自己在test.php中进行解析:

$raw_post = file_get_contents("php://input");
$data = json_decode($raw_post, true);
print_r($data);

同样的问题:1 2