php - 如何使用 curl 发送数组和对象
问题描述
我是 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'].
我的请求应该是什么样子?
解决方案
您需要使用 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 请求将如下所示
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);
推荐阅读
- php - 如何为视图中的非唯一记录设置相同的颜色
- flutter - 为什么我的资产图像第一次加载但第二次在我用颤振构建我的应用程序时加载
- python - PyCharm 无法导入模块
- python - 在 kivymd 中使用 arabic_reshaper 和 bidi.algorithm
- excel - 如何为列中的每个“新”值创建一个新的工作簿?
- jquery - Fotorama jQuery 插件的缩放功能
- python - 检查字符串的“alpha”部分是否仅包含特定的字符序列 - python
- react-native - 图像不适合屏幕 React-native
- python - Python中的空间循环
- php - 事件 assertDispatched 无法断言循环内生成的事件