2016-12-01 2 views
1

Ich versuche get Anforderung an diese API https://api.coinmarketcap.com/v1/ticker/bitcoin/ und es funktioniert gut zu senden, ich bin das Objekt bekommen, aber wenn ich versuche, es Objekteigenschaften zu nennen ist mir Fehler geben:Laravel verputzen Anfrage API holen Interaktion

Undefined property: GuzzleHttp\Psr7\Response::$id 

Dies ist mein Code:

$client = new GuzzleHttp\Client(['base_uri' => 'https://api.coinmarketcap.com/v1/ticker/']); 
    $response = $client->request('GET', 'bitcoin'); 
    return $response->id;; 

ich nicht wirklich wissen, wie man mit diesem Objekt zu interagieren ...

Antwort

2

Das Objekt Guzzle Antwort nicht, dass die Art und Weise funktioniert, es funktioniert nicht nehme an w Hat der Inhalt der Antwort ist und Proxy Ihre Anfrage für eine Eigenschaft.

Sie konnten $response->json() anrufen, aber Sie können das nicht mehr wegen PSR-7 tun. Stattdessen tun Sie etwas wie folgt:

$items = json_decode($response->getBody()); 
foreach ($items as $item) { 
    echo($item->id); 
} 

Dieser Endpunkt gibt ein Array von Objekten zurück. Sie müssten also entweder die erste oder die Schleife durchlaufen, wenn mehrere vorhanden sind.

HINWEIS: Wenn Sie den Namespace an der Spitze des Controllers wie hinzufügen:

use \GuzzleHttp\Client; 

Sie dann in Ihrem Code muss nur, um es als Client wie zu verweisen:

$client = new Client(...); 
+0

Das tat es! Danke, ich wähle Ihre Antwort aus, sobald ich kann (in 3 Minuten) – Michael

+0

Ich habe diese Anfrage von web.php Datei nur um es zu testen, aber wenn ich es von meinem Controller versuche, gibt es mir Fehler Klasse 'App \ Http \ Controllers \ GuzzleHttp \ Client 'nicht gefunden Obwohl ich nur eingefügten Code kopiere und ich habe GuzzleHttp \ Client verwenden; kannst du bitte ne ne hilfe damit? – Michael

+0

Importieren Sie den Namespace .... –