Článek popisuje nejjednodušší způsob, jak se z PHP aplikace nejlépe připojit do systému ABRA FlexiBee pomocí REST-API, a získat tak data z evidence třetí strany.
První kroky
- Vytvořte pro API připojení samostatného uživatele. U tohoto uživatele postačí nastavit Typ uživatele na REST-API. Nepůjde se s ním tedy přihlásit přes desktopového klienta, ani přes webové rozhraní.
Role uživatele pak závisí pouze na tom, jaké evidence má mít uživatel přístupné. Například uživatel pro propojení s e-shopem určitě nemusí být ADMIN. Bude mu bohatě stačit role UŽIVATEL. - Licence musí podporovat REST-API. V současné době je REST-API pro čtení součástí každé licence ABRA FlexiBee (Typ uživatele: Pouze pro čtení). Pokud budete potřebovat do systému zapisovat data, bude nutná licence s REST-API pro zápis (Typ uživatele: REST API). Tento modul je doplatkový, ale automatizace, která se s jeho pomocí nechá zařídit, mnohokrát převýší počáteční investici.
- Zjistěte identifikátor firmy a adresu a port serveru, na který se budeme připojovat.
Adresu a port serveru je možné zjistit v desktopového aplikaci, ve správě datových zdrojů nebo po připojení do firmy v dialogu O aplikaci FlexiBee (Nápověda – O aplikaci FlexiBee), na záložce Detaily o aplikaci, v poli Adresa centrálního serveru (bude se v něm vyskytovat výraz podobný např. demo.flexibee.eu:5434).
Identifikátor firmy je možné zjistit pouze přes webové rozhraní. Na adrese server:port/c (např. demo.flexibee.eu/c), je možné nechat si vypsat firmy, které má uživatel ve FlexiBee přístupné. Po kliknutí na kteroukoliv z nich se připojíte do této firmy a URL se změní na server:port/c/identifikátor (např. demo.flexibee.eu/c/demo). Identifikátor je tedy konec URL adresy od posledního lomítka (na demo příkladě tedy demo).
Programování
Níže uvedený program se připojí k serveru demo.flexibee.eu. Pomocí http autentizace se přihlásí jako uživatel winstrom, s heslem winstrom, do firmy s identifikátorem demo. Z této firmy stáhne XML soubor adresáře a vypíše ho jako tabulku, ve které bude v prvním sloupci zkratka firmy a ve druhém název firmy.
Při chybě během načítání vypíše chybu „Při operaci nastala chyba“ a kód chyby.
<?php // URL with xml data $url = "https://demo.flexibee.eu/c/demo/adresar.xml"; // create curl resource $ch = curl_init(); // return content as a string from curl_exec curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // follow redirects (compatibility for changes in FlexiBee) //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // HTTP authentication curl_setopt($ch, CURLOPT_HTTPAUTH, TRUE); // FlexiBee by default uses Self-Signed certificates //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // for debugging // curl_setopt($ch, CURLOPT_VERBOSE, TRUE); // set username and password curl_setopt($ch, CURLOPT_USERPWD, "winstrom:winstrom"); // set URL curl_setopt($ch, CURLOPT_URL, $url); // set HTTP method curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); // execute $output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 && curl_getinfo($ch, CURLINFO_HTTP_CODE) != 201) { printf ("Při operaci nastala chyba (HTTP %d): %sn", curl_getinfo($ch, CURLINFO_HTTP_CODE), $output); } // close curl resource to free up system resources curl_close($ch); // display data libxml_use_internal_errors(true); $data = simplexml_load_string($output); if (!$data) { echo "Error loading XML"; foreach(libxml_get_errors() as $error) { echo " ", $error->message; } } else { echo "<table>"; foreach($data->children() as $radek) { echo "<tr><td>"; echo $radek->kod; echo "</td><td>"; echo $radek->nazev; echo "</td></tr>"; } echo "</table>"; } ?>