Hallo Zusammen, möchte zur automatisierten Artikel-Generierung aus großer Datenbank die Gambio-API nutzen, da ich durch die Unmengen von untereinander abhängigen Tabellen bezüglich der Produkte, so gut wie gar nicht durchblicke. Mein erster Geh-Versuch mit der API ist die Session-Abfrage, bekomme aber nur für mich nichtssagende Fehlermeldung. Unten ist mein PHP-Code und die XML-Datei. Vielleicht hat jemand ein paar Tips für mich, was ich falsch mache. LG Gregor PHP (getSession.php): <?php $sessionObjekt = new gambioGetSession(); $sessionObjekt->callGambio(); $sessionObjekt->printResult(); class gambioGetSession { private $apiUrl = "http://kiosk-king.de/request_port.php?module=XMLConnect&api_version=1.0"; private function _getRequestBody() { $requestXmlBody = file_get_contents('getSession.xml'); return $requestXmlBody; } public function callGambio() { $connection = curl_init(); curl_setopt($connection, CURLOPT_URL, $this->apiUrl); curl_setopt($connection, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); curl_setopt($connection, CURLOPT_POST, 1); $requestBody = $this->_getRequestBody(); curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody); curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); $responseXml = curl_exec($connection); curl_close($connection); $this->_responseXml = $responseXml; var_dump($responseXml); } public function printResult() { //Xml string is parsed and creates a DOM Document object $responseDoc = new DomDocument(); $responseDoc->loadXML($this->_responseXml); //get any error nodes $errors = $responseDoc->getElementsByTagName('request'); //if there are error nodes if($errors->length > 0) { $message = $errors->item(0)->getElementsByTagName('errormessage'); var_dump($message); } else { //no errors //get results nodes $responses = $responseDoc->getElementsByTagName("login"); foreach ($responses as $response) { $acks = $response->getElementsByTagName("session_key"); $ack = $acks->item(0)->nodeValue; echo "<h1>SessionID = $ack </h1><BR />\n"; } } } } ?> XML (getSession.xml): <?xml version="1.0" encoding="UTF-8"?> <GambioXML> <general> <function>login</function> </general> <login> <user>gregor.mannek@comidos.de</user> <password>******</password> </login> </GambioXML>
Oh, die Fehlermeldung hab ich vergessen, SORRY: <![CDATA[ErrorException: Undefined index: gambio_api_xml in D:\domains\kiosk-king.de\httpdocs\system\classes\gambio_xml\XMLConnectAjaxHandler.inc.php:88 Stack trace: #0 D:\domains\kiosk-king.de\httpdocs\system\classes\gambio_xml\XMLConnectAjaxHandler.inc.php(88): custom_error_handler(8, 'Undefined index...', 'D:\\domains\\kios...', 88, Array) #1 D:\domains\kiosk-king.de\httpdocs\system\core\RequestRouter.inc.php(93): XMLConnectAjaxHandler->proceed() #2 D:\domains\kiosk-king.de\httpdocs\request_port.php(70): RequestRouter->proceed('XMLConnect') #3 {main}]]>
Kurzer Einwand: Wir haben mehrere APIs für den gleichen Zweck, du hast die XML-API am Wickel, das ist die ältere Variante. Wir haben auch eine REST-API, die ist einfacher, moderner und die Zukunft. Der Noch-Haken: Darüber kann man aktuell noch keine Variantenartikel schreiben, das fehlt noch. Wenn Variantenartikel bei dir kein Kriterium sein sollten, solltest du zu REST wechseln.
Da ich noch nicht so viel Erfahrung mit PHP habe, würde ich mich freuen, wenn jemand ein paar Code-Zeilen Beispiel für mich hätte, wie ich einen CALL an die REST-Api machen kann !?
Hier die Doku zur REST-API: https://developers.gambio.de/docs/3.3.1.0/apidoc/ In PHP kannst du die Requests mit cURL machen (http://php.net/manual/en/book.curl.php). Zum Testen ist Postman (https://www.getpostman.com/) zu empfehlen.