Gambio API

Dieses Thema im Forum "Schnittstellen & externe Module" wurde erstellt von guenter_reit, 24. April 2017.

  1. guenter_reit

    guenter_reit Erfahrener Benutzer

    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>
     
  2. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Hier is die Entwickler Doku (Link nur für registrierte Nutzer sichtbar.)
     
  3. Daniel W. (Gambio)

    Daniel W. (Gambio) Gambio GmbH

    Poste doch mal deine nichtssagende Fehlermeldung... Vielleicht hast du ja Glück ;)
     
  4. guenter_reit

    guenter_reit Erfahrener Benutzer

    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}]]>
     
  5. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    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.
     
  6. guenter_reit

    guenter_reit Erfahrener Benutzer

    Habe bis jetzt nur Erfahrung mit XML-Api's... :-(
     
  7. guenter_reit

    guenter_reit Erfahrener Benutzer

    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 !?
     
  8. Daniel W. (Gambio)

    Daniel W. (Gambio) Gambio GmbH