Nadväzujeme na článok PHP XML zápis dát do ABRA Flexi, ktorý popisoval zápis do adresára s využitím XML so štruktúrovanými dátami. V dnešnej dobe sa však XML nahrádza zápisom JSON. Ako na to ukazuje táto časť návodu.
Pripravte si pole s dátami adresára.
$adresar = array( "winstrom" => array ( "adresar" => array( "nazev" => "CharlieB vložený jako JSON", "ulice" => "Lochotínská 18", "mesto" => "Plzeň", "psc" => "301 00", "tel" => "+420 371 124 321", "email" => "podporaflexi@abra.eu" ) ) );
Dáta budete posielať na URL:
// URL with xml data $url = "https://demo.flexibee.eu/c/demo/adresar.json";
Ak zmeníte príponu url z XML na JSON, systém ABRA Flexi rozpozná, že mu posielate JSON, a nebude potrebovať ďalšie hlavičky.
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($adresar));
Použite funkciu json_encode a ako postfields nastavte pole $adresar.
A to sú všetky zmeny, ktoré je potrebné vykonať, aby ste mohli do ABRA Flexi posielať namiesto XML dáta vo formáte JSON.
Celý program teda bude vyzerať napríklad takto:
<?php
// URL with json data
$url = "https://demo.flexibee.eu/c/demo/adresar.json";
// 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, "PUT");
// json data array
$adresar = array( "winstrom" => array ( "adresar" => array( "nazev" => "CharlieB vložený jako JSON", "ulice" => "Lochotínská 18", "mesto" => "Plzeň", "psc" => "301 00", "tel" => "+420 371 124 321", "email" => "podpora@flexibee.eu" ) ) );
// set data
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($adresar));
// execute
$output = curl_exec($ch);
// FlexiBee return value
header("Content-Type: application/json");
print ($output);
// close curl resource to free up system resources
curl_close($ch); ?>
