REST API, gibt kein Daten zurück, die Ausgabe bleibt leer.

Hallo, ich hoffe irgendjemand kann mir bei meinem Problem helfen. Ich bekomme kein Ausgabe über Shopware REST API, wenn ich sie innerhalb einer PHP Datei ausführe. Alles läuft gut wenn ich es über die URL(irgendeine-domain/api/articles) aufrufe, es kommt ein Login Fenster und wenn ich die Daten eingebe, bekomme ich auch eine Ausgabe. Shopware version 5.0.2 Server: Debian bei JWeiland, die sind ein Reseller von DomainFactory Ich habe es mit diesen zwei Varianten probiert, beide geben mir HTML-Code 0 aus. ApiClient.php enthält den Code aus der wiki Variante 1 include ('ApiClient.php'); $client = new ApiClient( //URL of shopware REST server 'url', //Username 'user', //User's API-Key 'key' ); $client-\>get('articles'); und die hier, diese habe ich aus einer Präsentation. Variante 2 [code] $requestData = array( ‘host’ => ‘url’, ‘username’ => ‘user’, ‘apiKey’ => ‘key’, ‘url’ => ‘articles’, ‘method’ => ‘GET’, ‘data’ => array() ); $url = $requestData[‘host’] . $requestData[‘url’]; $authString = $requestData[‘username’] . ‘:’ . $requestData[‘apiKey’]; $cURL = curl_init(); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, false); curl_setopt($cURL, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_setopt($cURL, CURLOPT_USERPWD, $authString); curl_setopt($cURL, CURLOPT_HTTPHEADER, array( ‘Content-Type: application/json; charset=utf-8’, )); $dataString = json_encode($requestData[‘data’]); curl_setopt($cURL, CURLOPT_URL, $url); curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, $requestData[‘method’]); curl_setopt($cURL, CURLOPT_POSTFIELDS, $dataString); $result = curl_exec($cURL); $httpCode = curl_getinfo($cURL, CURLINFO_HTTP_CODE); echo $url.’
'; echo sprintf('HTTP-Code: %d

', $httpCode); print\_r(json\_decode($result)); [/code] Würde mich über jede Hilfe freuen, da ich einfach nicht mehr weiter komme. MfG Zaphod

Hi, wie hängt der Client, den du da zeigst, mit der API zusammen - da ist ja gar keine ApiClient-Klasse definiert. Benutzt du diesen Client hier? https://developers.shopware.com/develop … your-own-a In deinem Beispiel oben wird ja auch gar keine Ausgabe gemacht, und der Client, den du zeigst, hat keine ApiClient-Klasse, von daher scheint das ja nicht der Client zu sein, den du darüber includest, oder? Schönen Gruß, Daniel

Hallo Daniel, im der ersten Variante benutze ich den von dir verlinkten Client. Soweit ich die Wiki verstanden habe, wird die Ausgabe über $client->get(‘articles’); generiert. Laut den Beispielen im Netz, sollte ich beim Aufruf der ersten Variante über den Browser die Ausgabe aller Artikel bekommen. Kann sein das ich da etwas missverstanden habe, wenn das so ist, wie würde den die Zeile lauten, mit der man z.B. alle Artikel abruft? Die zweite Variante, habe ich mir dann aus diesem Vortrag(http://de.slideshare.net/shopware/rest- … g-22841490) zusammengestellt. MfG Zaphod

Deine erste Variante sollte so funktionieren wenn User und API-Key richtig sind. Funktioniert curl evtl. nicht?

btw: Anstatt dich mit curl befehlen rumzuschlagen, kannst du das ganze auch mit drei codezeilen mit guzzle lösen https://github.com/guzzle/guzzle Der APIClient aus den Docs ist auch nur ein Beispiel.

@t2oh4e Api-Key und User sind richtig, da der aufruf über domain/api/articles, funktioniert und auch Daten zurück gibt. curl ist auch eingeslatet, das sagt die phpinfo cURL support enabled cURL Information 7.37.1 Es läuft noch Typo3 auf dem Server, da gibt es auch keine Probleme mit curl. Ich habe in meiner Verzweiflung auch einen lokalen Server mit Ubuntu aufgesetzt und alle benötigten Modul freigeschaltet, dort bekomme ich das gleiche Ergebnis. Mit einem Fehler könnte ich ja noch etwas anfangen, aber so tappe ich einfach im Dunkeln.

@kayyy Ich bin mir im klaren das es nur ein Beispiel ist, ich wollte es ja auch nur mal testen. Wenn ich ein Ausgabe bekommen würde, hätte ich es dann schon an meine Bedürfnisse angepasst. guzzle kenne ich gar nicht, werde mich mal dort einlesen, vielleicht klappt es ja damit. Wäre halt schön wenn es wie in der Beschreibung ohne zusätzliche Software funktionieren würde.

@zaphod Wenn du nicht ganz so resistẹnt gegen Fortschritt bist hier: https://github.com/kayyyy/swapi Die zwei Zeilen in der index.php abändern, composer update ausführen und fertig. Sollte dann in diesem Beispiel alle Orders deiner Shopware Installation holen. [list] [*] git clone https://github.com/kayyyy/swapi.git[/*] [*] composer update[/*][/list]

Vielen Dank an alle, es funktioniert jetzt. Es lag am JWeiland Server, dieser hat die Anfragen aus unerfindlichen Gründen geblockt. Ich habe es jetzt so gelöst, das ich die API von unserem lokalen Server aus anspreche, das funktioniert super. Hat sogar den Vorteil das der Api-Key nicht mehr auf dem Webserver liegt. @kayyy Bin eigentlich ein großer Fan vom Fortschritt(und deinem Blog), werde mir das ganze mal genauer anschauen.

[quote=„zaphod“]Vielen Dank an alle, es funktioniert jetzt. Es lag am JWeiland Server, dieser hat die Anfragen aus unerfindlichen Gründen geblockt. Ich habe es jetzt so gelöst, das ich die API von unserem lokalen Server aus anspreche, das funktioniert super. Hat sogar den Vorteil das der Api-Key nicht mehr auf dem Webserver liegt. @kayyy Bin eigentlich ein großer Fan vom Fortschritt(und deinem Blog), werde mir das ganze mal genauer anschauen.[/quote] Fortschritt ist immer gut :x Über Guzzle ist es einfach wesentlich unkomplizierter solche Abfragen zu machen. bzgl. des API Keys - Hier bietet es sich an .env Variablen zu nutzen, so stehen diese nicht in irgendwelchen config Dateien.

Habe jetzt auch auf envVariablen umgestellt, das Befühlen von Shopware hat auch schon funktioniert. Nochmal vielen dank für alle Antworten.

[quote=“zaphod”]Habe jetzt auch auf envVariablen umgestellt, das Befühlen von Shopware hat auch schon funktioniert. Nochmal vielen dank für alle Antworten.[/quote] Jap. Habe mein Beispiel auch kurz mal schmutzig mit .env geupdated. Soll aber auch nur ein Beispiel sein :slight_smile: