Я работаю над приложением и использую свой собственный API на Laravel. В моем API я закодировал ниже, чтобы получить номер получателя в виде массива в моем APIController ниже.
Теперь, пытаясь протестировать свой API в DocController, я продолжаю получать ошибку.
pass recipients field as an array
В DocController я уже передаю получателя в виде массива. Что еще мне могло не хватать в приведенном ниже коде?
ApiController
public function gearCall(Request $request)
{
$recipients = $request->post('recipient');
if (!is_array($recipients)) {
return response()->json([
'status' => 'error',
'message' => 'pass recipients field as an array'
]);
}
}
DocController
public function testAPI(Request $request)
{
$endPoint = 'https://lara.codein.com/api/';
$apiKey = '****';
$url = $endPoint . '?key=' . $apiKey;
$curlFile = curl_file_create('public/media/test.mp3');
$data = [
'recipient' => ['9082300239', '9052384200'],
];
$ch = curl_init();
$headers = array();
$headers[] = "Content-Type: multipart/form-data";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch);
$result = json_decode($result, TRUE);
curl_close($ch);
Когда я print_r $ data в DocController
Array
(
[recipient] => Array
(
[0] => 9082300239
[1] => 9052384200
)
{"status":"error","message":"pass recipients field as an array"}
@ Petay87, проверьте мои обновления ... Да, запрос содержит данные
Что делать, если вы print_r ($ request) в ApiController? Мы до сих пор не увидели, что $ request содержит то, что вы ожидаете.
Не могли бы вы опубликовать распечатку $ получателей
Также проверьте print_r ($ _ POST ["данные"]). Я думаю, ваша проблема здесь в том, что вы смотрите на $ request, но не там, где находятся данные, поскольку у вас нет Request $ request в общедоступной функции gearCall (). Либо измените его на общедоступную функцию gearCall (Request $ request), либо используйте $ recipients = $ _POST ['data'] [0];
@ Petay87, я внес изменения в свой код public function gearCall(Request $request), но получаю тот же ответ, что и в моем вопросе.
Итак, каков вывод print_r ($ request) и print_r ($ _ POST) в ApiController?
Может быть, я также использую http_build_query($data) для заголовка $headers[] = "Content-Type: multipart/form-data";
@ Petay87, я получаю тот же ответ, что и в вопросе
Я просил вас print_r ($ request) и print_r ($ _ POST) в ApiController. В настоящий момент мы просто работаем над тем, что это не массив, но мы еще не проверили, есть ли данные в методе ApiController.






Вы должны сообщить CURL, что это запрос HTTP POST, попробуйте добавить это:
curl_setopt($ch, CURLOPT_POST, 1);
В вашем ApiController строка $ recipients = $ request-> post ('recipient'); где инициируется запрос $? Вы проверили, что запрос $ действительно что-нибудь содержит?