调用本地主机时,如何解决Guzzle中的“客户端错误”

时间:2019-08-21 11:25:14

标签: laravel ubuntu curl guzzle laravel-5.8

我当前正在设置一个新的laravel应用程序,该应用程序使用在同一服务器(专用服务器,而非共享主机)上托管的另一个laravel应用程序的api端点。

但是我无法正常工作以从api接收数据。

在此服务器上,我编辑了/ etc / hosts文件以创建指向API项目的URL。此网址称为just.engine,当我调用curl just.engine / api / test时,我得到了正确的响应,但是在laravel代码中,我收到了以下错误。

“客户端错误:GET just.engine/api/test导致了404 Not Found

因此,我进行了一些研究,发现也许向食人鱼客户端添加Host标头可以解决此问题。客户端现在看起来像这样:

    $client = new Client([
        'base_uri' => 'http://127.0.0.1',
        'headers' => [
            'Host' => 'just.engine'
        ]
    ]);

但是仍然出现相同的问题。

laravel API路由如下所示:

    Route::get('test', function() {
        return 'test complete';
    });

接收应用程序中的laravel代码使用

use GuzzleHttp\Client;

如下所示:

    $client = new Client([
        'base_uri' => 'http://127.0.0.1',
        'headers' => [
            'Host' => 'just.engine'
        ]
    ]);
    $res = $client->request('GET', '/api/test');

    if ($res->getStatusCode() == '200') {
        return \GuzzleHttp\json_decode($res->getBody()->getContents());
    }

当我调用代码时,它会返回

Client error: `GET http://127.0.0.1/api/test` resulted in a `404 Not Found` response: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" c (truncated...)

我希望看到的是:测试完成。就像我在终端中运行它时一样。

如果我运行curl just.engine/api/test,它将按预期返回测试完成。

0 个答案:

没有答案