我有一个运行在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);