Жрать ответ sendAsync return

Я хочу вернуть ответ от метода sendAsync от Guzzle, но он возвращается пустым.

public function getliveflight_guzzle()
{
        $url = 'https://www.tesflight.com/ajax/pingFlightSearch?d=CGK&a=DPS&date=2018-08-18&adult=1&child=0&infant=0&service_class=&airlines=["MALAYSIAAIR"]&subsidy=true&page_view=roundseperate&refund_deposit=&refund_currency=';
        $client = new Client(['headers' => ['Accept' => 'application/json, text/javascript, */*; q=0.01', 'Accept-Language' => 'en-us,en;q=0.5', 'X-Requested-With' => 'XMLHttpRequest']]);

        // Send an asynchronous request.
        $request = new Psr7\Request('GET', $url, [
            'curl' => [
                CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_SSL_VERIFYHOST => '0',
                CURLOPT_SSL_VERIFYPEER => '0',
                CURLOPT_AUTOREFERER => TRUE,
                CURLINFO_HEADER_OUT => true,
                CURLOPT_FOLLOWLOCATION => '1',
                CURLOPT_VERBOSE => true
            ]
        ]);
        $promise = $client->sendAsync($request)->then(function ($response) {
            return $response->getBody()->getContents();
        });
        $promise->wait();
}

public function actionTesguzzle()
{               
        $response = $this->getliveflight_guzzle();
        $response = json_decode($response, TRUE);
        print_r($response);
}

Также я хочу попытаться сохранить $ response-> getBody () -> getContents () в переменной, затем я пытаюсь повторить его за пределами метода sendAsync, но он отображается пустым. Но если я повторю его внутри sendAsync, он покажет данные. Как такое могло случиться?

Пожалуйста помоги.

Стоит ли изучать 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 и хотите разрабатывать...
0
0
1 478
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны вернуть значение из функции return $promise->wait();, попробуйте следующее:

public function getliveflight_guzzle()
{
        $url = 'https://www.tesflight.com/ajax/pingFlightSearch?d=CGK&a=DPS&date=2018-08-18&adult=1&child=0&infant=0&service_class=&airlines=["MALAYSIAAIR"]&subsidy=true&page_view=roundseperate&refund_deposit=&refund_currency=';
        $client = new Client(['headers' => ['Accept' => 'application/json, text/javascript, */*; q=0.01', 'Accept-Language' => 'en-us,en;q=0.5', 'X-Requested-With' => 'XMLHttpRequest']]);

        // Send an asynchronous request.
        $request = new Psr7\Request('GET', $url, [
            'curl' => [
                CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_SSL_VERIFYHOST => '0',
                CURLOPT_SSL_VERIFYPEER => '0',
                CURLOPT_AUTOREFERER => TRUE,
                CURLINFO_HEADER_OUT => true,
                CURLOPT_FOLLOWLOCATION => '1',
                CURLOPT_VERBOSE => true
            ]
        ]);
        $promise = $client->sendAsync($request)->then(function ($response) {
            return $response->getBody()->getContents();
        });

        return $promise->wait();
}

public function actionTesguzzle()
{               
        $response = $this->getliveflight_guzzle();
        $response = json_decode($response, TRUE);
        print_r($response);
        echo json_last_error_msg();
}

вы также можете использовать функцию json_last_error_msg () для отладки декодирования json

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