如何使用curl发送数组和对象

时间:2019-04-04 06:10:17

标签: php curl

我是卷曲的初学者。我想在发布不同数据的地方提出请求。

我有一个密码

$curl = curl_init();


$fields = (object) array(
     'contactFilter' => (object) array(
          'clicked_message.messageid' => '5',
          'messages_sent.messageid' => '5'
      ),
     'exportAttributes' => 'email',
   );

$fields = json_encode($fields);

$fields_string = http_build_query($fields);

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.sendinblue.com/v3/contacts/export",
  CURLOPT_HTTPHEADER => array(
    'Accept: application/json',
  'Content-Type: application/json',
  'api-key: my-key-12345',
  ),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $fields_string
));

$response = curl_exec($curl);

文档说我需要;

contactFilter object (X= campaign id): {"clicked_message.messageid": X,"messages_sent.messageid": X}

exportAttributes` array of strings For example, `['fname', 'lname, 'email'].

我的请求应如何显示?

1 个答案:

答案 0 :(得分:2)

例如,您需要使用CURLOPT_POSTFIELDS来发布字段

$fields = array(
        'username' => "annonymous",
        'api_key' =>  "1234"
    ); 
 $fields_string = http_build_query($fields);

现在使用变量fields_string发送数组数据

   curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);

您的卷曲请求将类似于

curl_setopt_array($curl,
  array(
    CURLOPT_URL => "https://api.sendinblue.com/v3/contacts/export",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $fields_string
  )
);

更新的代码-

$curl = curl_init();


$fields = (object) array(
 'contactFilter' => (object) array(
      'clicked_message.messageid' => '5',
      'messages_sent.messageid' => '5'
  ),
 'exportAttributes' => 'email',
);

$fields = json_encode($fields);

//$fields_string = http_build_query($fields);

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.sendinblue.com/v3/contacts/export",
  CURLOPT_HTTPHEADER => array(
    'Accept: application/json',
   'Content-Type: application/json',
   'api-key: my-key-12345',
  ),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $fields
));

$response = curl_exec($curl);
echo $response;

print_r($response);