如何将有效负载数组传递到curl调用中?

问题描述 投票:0回答:2

我正在尝试创建一个变量并将其放入数组中。 像这样:

$ch = curl_init('https://apps.net-results.com/api/v2/rpc/server.php?Controller=Contact');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'user:pass');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    json_encode(
        array(
            'id' => uniqid(),
            'method' => 'getMultiple',
            'jsonrpc' => '2.0',
            'params' => array(
                'offset' => 0,
                'limit' => 50, // 10, 25, or 50
                'order_by' => 'contact_email_address', //'contact_email_address' or 'contact_id'
                'order_dir' => 'ASC', //'ASC' or 'DESC'
            )
        )
    )
);

$strResponse = curl_exec($ch);

我不确定这是否可能。 我尝试过做不同的事情,例如创建一个类,并将函数放在数组中的类中,但它不起作用。 谁能给我应该尝试的正确语法?

php arrays curl
2个回答
1
投票

如果您通过 post 传递参数,您应该使用 http_build_query() 并且您可以将其作为 CURL post 字段传递。

您应该设置:

$array = [
    'id'      => uniqid(),
    'method'  => 'getContactActivity',
    'jsonrpc' => '2.0'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://example.site");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array));
curl_exec($ch);
curl_close($ch);

0
投票

不要拨打

json_encode()
CURLOPT_POSTFIELDS
选项的值应该是关联数组或 URL 编码格式的字符串。如果您使用数组,它会自动为您编码。

© www.soinside.com 2019 - 2024. All rights reserved.