无法让 Guzzle 在我的 Bluemix 上的 Laravel 应用程序中工作
Can't get Guzzle working in my Laravel app on Bluemix
我在 Bluemix 中有一个正在运行的 PHP 应用程序 运行ning,我想扩展它以调用 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 还是会自动从 buildpack 中获取它?
我是否以正确的方式导入了 Guzzle 代码?
为什么它在我的控制器路径中寻找 Guzzle 客户端?
是否有一个很好的 PHP 示例程序来驱动 Twitter 的 Insights?我在 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,
]);
它会尝试在控制器路径中寻找 Guzzle 客户端,这可能是因为您的控制器命名空间是 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);
我在 Bluemix 中有一个正在运行的 PHP 应用程序 运行ning,我想扩展它以调用 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 还是会自动从 buildpack 中获取它?
我是否以正确的方式导入了 Guzzle 代码?
为什么它在我的控制器路径中寻找 Guzzle 客户端?
是否有一个很好的 PHP 示例程序来驱动 Twitter 的 Insights?我在 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,
]);
它会尝试在控制器路径中寻找 Guzzle 客户端,这可能是因为您的控制器命名空间是 App\Http\Controllers
,而您正在尝试使用 new GuzzleHttp\Client
$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);