JSON cURL帖子是一个空数组

时间:2016-12-11 19:18:05

标签: php json curl post

我发布了一个转换为JSON字符串的数组,其中cURL如下所示。 但是在接收端,我得到一个空数组。

function postFunction ($data_h) {

    $c = curl_init();

    curl_setopt_array($c, array(
            CURLOPT_URL => 'https://domain.tld/script.php',
            CURLOPT_HTTPHEADER => array('Content-Type:application/json'),
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($data_h), 
            CURLOPT_RETURNTRANSFER => true
        ) 
    );

    return curl_exec($c);
    curl_close($c);
}


$setup = [
    'sms' => [
        'number' => '+39XXXXXXXX',
        'message' => 'Sample msg 123...',
    ]
];


print_r( postFunction($setup) );

而不是$_POST我尝试使用var_dump($HTTP_RAW_POST_DATA),就像我在Stack上的另一个问题上看到的那样 - 但我得到的只是NULL

这是我返回curl_getinfo($c)时得到的:

它甚至不调整内容类型。

Array
(
    [url] => https://domain.tld/script.php
    [content_type] => text/html; charset=utf-8
    [http_code] => 200
    [header_size] => 140
    [request_size] => 593
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.127732
    [namelookup_time] => 0.013128
    [connect_time] => 0.013257
    [pretransfer_time] => 0.106738
    [size_upload] => 463
    [size_download] => 5
    [speed_download] => 39
    [speed_upload] => 3624
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 0.125601
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => xx.xx.xx.xx
    [certinfo] => Array
        (
        )

)

最后,我想将数据转换为json_decode()的对象,但我首先需要获取数据。

对我在这里做错了什么的想法?

1 个答案:

答案 0 :(得分:1)

在您的代码中,您指示内容类型为json,但您的POST数据实际上并非都是json。你可以使用

file_get_contents("php://input")

获取您的数据,而不是$ _POST

更多信息herehere