2016-05-03 45 views
1

我在Bluemix中運行了一個有效的PHP應用程序,我想要擴展以調用RESTful服務(Insights for Twitter)。由於PHP沒有內置的方式來調用服務,我環顧四周,決定使用Guzzle。無法在Bluemix上的Laravel應用中使用Guzzle

我從它的Git下載狂飲6.0.2和進口壓縮到我httdocs /供應商路徑,並更名爲進口路徑GuzzleHttp我改變了我的buildpack讓PHP 5.5及更新composer.json到自動加載.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 

我不知道爲什麼它在尋找應用程序\ Http \ Controllers \但我試過copyi ng Guzzle src文件夾 - 其中包括Client.php - 有,將其重命名爲GuzzleHttp,但它仍然以相同的方式失敗。

我既不是PHP也不是Laravel的專家。我繼承了來自實習團隊的代碼,所以我不太清楚所有的部分如何組合在一起。

我有一些問題:

我真的需要在我的工作區安裝狂飲或將其從buildpack自動拾取?

我是否以正確的方式導入了Guzzle代碼?

爲什麼它在我的控制器路徑中尋找Guzzle客戶端?

是否有一個很好的PHP示例程序來驅動Twitter的Insights?我在Javascript中找到了一個,但我需要運行這個服務器端?

當然,最重要的是,我需要做些什麼來實現這個目標?

回答任何或所有的這些問題爾德不勝感激

+1

如果你使用,你需要導入這樣的'$客戶端=新\ GuzzleHttp \ Client客戶端類的全名...'或如果你從'使用GuzzleHttp \ Client;' - >'$ client = new Client ...'進口'' –

回答

3

既然你加入

use GuzzleHttp\Client; 

你必須使用狂飲客戶是這樣的:

$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,而您試圖使用Guzzle客戶端,如new GuzzleHttp\Client

+0

非常感謝。這很有用。看起來我有一些閱讀要做。 –

0
$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); 
+0

這並不完全回答這個問題 – fragmentedreality