Передать поле получателя как массив

Я работаю над приложением и использую свой собственный 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"}

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

Petay87 09.01.2019 11:48

@ Petay87, проверьте мои обновления ... Да, запрос содержит данные

CodeNewbie 09.01.2019 11:52

Что делать, если вы print_r ($ request) в ApiController? Мы до сих пор не увидели, что $ request содержит то, что вы ожидаете.

Petay87 09.01.2019 11:57

Не могли бы вы опубликовать распечатку $ получателей

party-ring 09.01.2019 12:02

Также проверьте print_r ($ _ POST ["данные"]). Я думаю, ваша проблема здесь в том, что вы смотрите на $ request, но не там, где находятся данные, поскольку у вас нет Request $ request в общедоступной функции gearCall (). Либо измените его на общедоступную функцию gearCall (Request $ request), либо используйте $ recipients = $ _POST ['data'] [0];

Petay87 09.01.2019 12:06

@ Petay87, я внес изменения в свой код public function gearCall(Request $request), но получаю тот же ответ, что и в моем вопросе.

CodeNewbie 09.01.2019 12:16

Итак, каков вывод print_r ($ request) и print_r ($ _ POST) в ApiController?

Petay87 09.01.2019 12:17

Может быть, я также использую http_build_query($data) для заголовка $headers[] = "Content-Type: multipart/form-data";

CodeNewbie 09.01.2019 12:17

@ Petay87, я получаю тот же ответ, что и в вопросе

CodeNewbie 09.01.2019 12:21

Я просил вас print_r ($ request) и print_r ($ _ POST) в ApiController. В настоящий момент мы просто работаем над тем, что это не массив, но мы еще не проверили, есть ли данные в методе ApiController.

Petay87 09.01.2019 12:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
10
56
1

Ответы 1

Вы должны сообщить CURL, что это запрос HTTP POST, попробуйте добавить это:

curl_setopt($ch, CURLOPT_POST, 1);

Другие вопросы по теме