【发布时间】:2021-12-12 13:25:29
【问题描述】:
我正在运行如下代码
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://chat-service.com/api/direct',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POSTFIELDS =>'{
"to_number": "62111111111",
"to_name": "Mr X",
"message_template_id": "abc123abc123",
"channel_integration_id": "123abc123abc",
"language": {
"code": "id"
},
"parameters": {
"body": [
{
"key": "1",
"value": "name",
"value_text": "Mr X"
},
{
"key": "2",
"value": "vehiclereg",
"value_text": "L0001X"
},
{
"key": "3",
"value": "date",
"value_text": "29 Feb 2022"
}
]
}
}
',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer 1122334455',
'target_channel: trial'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
现在我想将 CURLOPT_POSTFIELDS 值存储为变量 这是我的代码 但仍然没有运行
<?php
$curl = curl_init();
$data = array
(
"to_number"=>'62111111111',
"to_name"=>'Mr X',
"message_template_id"=>'abc123abc123',
"channel_integration_id"=>'123abc123abc',
"language"=>
array
(
"code"=>"id"
),
"parameters"=>
array
(
"body"=>array
(
"key"=>"1",
"value"=>"name",
"value_text"=>"Mr X"
),
"body"=>array
(
"key"=>"2",
"value"=>"vehiclereg",
"value_text"=>"L0001X"
),
"body"=>array
(
"key"=>"3",
"value"=>"date",
"value_text"=>"29 Feb 2022"
)
)
);
curl_setopt_array($curl, array(
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer 1122334455',
'target_channel: trial'
),
CURLOPT_URL => 'https://chat-service.com/api/direct',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POSTFIELDS => http_build_query($data);
));
$response = curl_exec($curl);
curl_close($curl);
echo "<pre>";
print_r($response)
?>
在我看来,这一行是代码无法正常工作但仍不知道如何修复它的原因
运行一个
"parameters": {
"body": [
{
"key": "1",
"value": "name",
"value_text": "Mr X"
},
{
"key": "2",
"value": "vehiclereg",
"value_text": "L0001X"
},
{
"key": "3",
"value": "date",
"value_text": "29 Feb 2022"
}
]
}
没有运行
"parameters"=>
array
(
"body"=>array
(
"key"=>"1",
"value"=>"name",
"value_text"=>"Mr X"
),
"body"=>array
(
"key"=>"2",
"value"=>"vehiclereg",
"value_text"=>"L0001X"
),
"body"=>array
(
"key"=>"3",
"value"=>"date",
"value_text"=>"29 Feb 2022"
)
)
我试着到处搜索它 在这个上找到一些类似的案例 send post json with php (curl) 但仍然可以修复它
我确实是这样编码的
<?php
$data = array
(
"to_number"=>'62111111111',
"to_name"=>'Mr X',
"message_template_id"=>'abc123abc123',
"channel_integration_id"=>'123abc123abc',
"language"=>
array
(
"code"=>"id"
),
"parameters"=>
array
(
"body"=>array
(
"key"=>"1",
"value"=>"name",
"value_text"=>"Mr X"
),
"body"=>array
(
"key"=>"2",
"value"=>"vehiclereg",
"value_text"=>"L0001X"
),
"body"=>array
(
"key"=>"3",
"value"=>"date",
"value_text"=>"29 Feb 2022"
)
)
);
echo json_encode($data);
?>
这就是结果
{
"to_number": "62111111111",
"to_name": "Mr X",
"message_template_id": "abc123abc123",
"channel_integration_id": "123abc123abc",
"language": {
"code": "id"
},
"parameters": {
"body": {
"key": "3",
"value": "date",
"value_text": "29 Feb 2022"
}
}
}
【问题讨论】:
-
如果 POST 数据,请尝试使用 json_encode。它可能与多维数组有关。
-
数据中的主要问题是您希望对 php 关联数组使用相同的键。您使用身体 3 次。键(和数据)相互替换,只有最后一个会留在数组中,其他的会被覆盖。 php.net/manual/en/language.types.array.php
-
@OrbánZoltán 但第一个代码工作正常,这是来自服务器 "body": { "1": "name", "2": "vehiclereg", "3": "date " }
-
@BhojRajBhatta 我确实添加了 json 编码