Článek popisuje nejjednodušší způsob, jak se z PHP aplikace nejlépe připojit do systému ABRA Flexi 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 Flexi (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 Flexi (Nápověda – O aplikaci Flexi), 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 Flexi 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();
// for testing on localhost
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// return content as a string from curl_exec
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// follow redirects (compatibility for changes in Flexi)
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
// HTTP authentication
curl_setopt($ch, CURLOPT_HTTPAUTH, TRUE);
// Flexi 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>";
}
?>