API响应返回不带响应主体的JSON

时间:2019-06-13 17:21:39

标签: php json laravel request guzzle

使用Guzzle,我正在使用JSON格式的一些外部api, 通常我用

来获取数据

$ 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 :(得分:0)

第二个呼叫运行正常,但响应为空, 正如我们在屏幕快照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的文档