可以';我无法在Bluemix上的Laravel应用程序中使用Guzzle


Can't get Guzzle working in my Laravel app on Bluemix

我有一个运行在Bluemix中的PHP应用程序,我想扩展它来调用RESTful服务(Insights for Twitter)。由于PHP没有内置的方法来调用服务,所以我环顾四周,决定使用Guzzle。

我从它的Git下载了Guzzle 6.0.2,并将zip导入我的httdocs/vendor路径,并将导入的路径重命名为GuzzleHttp。我更改了构建包以获得PHP 5.5,并将composer.json更新为Autoload.psr4属性,其中包含:

"GuzzleHttp''": "htdocs/vendor/"

我重新部署了我的应用程序,它仍然有效。

然后,我在MainController.php中添加了以下代码:在其他一些使用之后:

use GuzzleHttp'Client;

然后:

$client = new GuzzleHttp'Client([
// Base URI is used with relative requests
'base_uri' => 'https:myserviceURI.mybluemix.net',
// You can set any number of default request options.
'timeout'  => 2.0,
]);
// Use guzzle to send a GET request to Watson Twitter Insights
 $guzzleresponse = $client->request('GET', '/api/v1/messages/search');

现在,当我重新部署应用程序时,我得到:

FatalErrorException in HomeController.php line 100:
Class 'App'Http'Controllers'GuzzleHttp'Client' not found

我不知道它为什么在app''Http''Controllers''中查找,但我尝试将Guzzle src文件夹(包括Client.php)复制到那里,并将其重命名为GuzzleHttp,但它仍然以同样的方式失败。

我既不是PHP,也不是Laravel专家。我从一个实习团队那里继承了代码,所以我不太知道所有的部分是如何组合在一起的。

我有一些问题:

我真的需要在我的工作区安装Guzzle吗?还是它会自动从构建包中获取?

我是否以正确的方式导入了Guzzle代码?

为什么它在我的控制器路径中寻找Guzzle客户端?

有没有一个好的PHP示例程序可以驱动Insights for Twitter?我在Javascript中找到了一个,但我需要运行这个服务器端?

当然,最重要的是,我需要做什么才能让它发挥作用?

对于这些问题中的任何一个或全部的答案,我们将不胜感激

由于添加了

use GuzzleHttp'Client;

你必须像这样使用Guzzle客户端:

$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'https:myserviceURI.mybluemix.net',
// You can set any number of default request options.
'timeout'  => 2.0,
]);

它试图在Controllers路径中查找Guzzle Client,可能是因为您的控制器名称空间是App'Http'Controllers,并且您正试图像new GuzzleHttp'Client 一样使用Guzzle客户端

   $client = new Client(array_merge([
        'base_uri' => 'URL',
        'timeout' => 30.0
    ]), $options);

/如果您需要选项/

    $options = array_merge_recursive([
        RequestOptions::AUTH => [
            'Conversation_USERNAME',
            'CONVERSATION_PASSWORD',
        ],
        RequestOptions::HEADERS => [
            'Content-Type' => 'application/json'
        ]
    ], $options);