Ответ API возвращает JSON без тела ответа - PullRequest
0 голосов
/ 13 июня 2019

Используя Guzzle, я потребляю некоторые внешние API в формате JSON, обычно я получаю данные с

$ data = $ request-> getBody () -> getContents ();

Но я не могу получить данные из этого другого API. Кажется, что данные не поступают в «теле ответа».

Этот вызов API работает: https://i.ibb.co/80Yk6dx/Screenshot-2.png

Это не работает: https://i.ibb.co/C239ghy/Screenshot-3.png

public function getRemoteCienciaVitaeDistinctions()
{
    $client = new Client(['headers' => ['Accept' => 'application/json']]);

    $request = $client->get(
        'https://................/',
        [
            'auth'          => ['...', '...'],
        ]

    );

    $data = $request->getBody()->getContents();
    return $data;
}

1 Ответ

0 голосов
/ 14 июня 2019

второй звонок работает нормально, но ответ пустой, как мы можем видеть на скриншоте 3, Total = 0, поэтому ответ от этого API пуст.

для правильной обработки, я предлагаю вам эту модификацию для вашего метода:

public function getRemoteCienciaVitaeDistinctions()
{
    $client = new Client(['headers' => ['Accept' => 'application/json']]);

    $request = $client->get(
        'https://................/',
        [
            'auth'          => ['...', '...'],
        ]

    );

    //Notice that i have decoded the response from json objects to php array here.

    $response = json_decode($request->getBody()->getContents());

    if(isset($response->total) && $response->total == 0) return [];

    return $response;
}

пожалуйста, проверьте документацию API, который вы используете

...