【发布时间】:2021-12-05 10:57:06
【问题描述】:
希望你做得很好。
我想将多维作为 raw-data 传递给我的 cURL 请求。但是当我尝试将数组传递给CURLOPT_POSTFIELDS 时,它给了我一个数组到字符串转换的错误。
当我尝试像这样传递数组时:
$post_data = [
"date"=> $_POST['date'],
"items" => $plan_details,
"form" => [
"clientName" => [
"name" => $_POST['form_data'][0]['clientName'],
"mobile" => $_POST['form_data'][0]['mobile'],
],
"clientAddress" => [
"line" => $_POST['form_data'][0]['addressLine'],
"city" => $_POST['form_data'][0]['addressCity'],
"state" => $_POST['form_data'][0]['addressState'],
"country" => "",
"pincode" => ""
],
"clientGST" => [
"companyName" => "",
"gstNo" => ""
],
]
];
以及 cURL 请求:
curl_setopt_array($curl, array(
CURLOPT_URL => "<URL>",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $post_data,
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer <key>"
),
));
如何将多维数组传递给CURLOPT_POSTFIELDS?
【问题讨论】:
-
目标 API 支持哪些 POST 格式?它支持
multipart/form-data吗?它支持x-www-form-urlencoded吗?支持application/json吗? -
谢谢@hanshenrik。问题是
Content-Type: application/json。我把它保存在CURLOPT_HTTPHEADER中,现在可以正常使用了。 -
您在上面提供的代码不适用于需要 application/json 的 API,您需要
CURLOPT_POSTFIELDS => json_encode($post_data),来实现这一点 -
正确。我只是忘了提。我们需要
json_encode数据然后提供Content-type。