Cum faci un script PHP care să citească un datafeed „cu autentificare” (SOAP)

Cum majoritatea proiectelor pe care le-am luat în ultima perioadă sunt magazine online, de multe ori trebuie să integrez datafeeduri de la diverși furnizori. Acestea pot fi de mai multe feluri, fie fișiere de tip CSV, fie de tip XML. Iar de aici pot varia în funcție de câmpurile cu caracteristici ale produselor (cod de produs, nume, familie, URL către poză etc.). Mulți le împart în feeduri de caracteristici, de preț și cele mai întâlnite XML-uri, cele care afișează stocurile de produse.

În sfârșit, toată lumea are propria bucătărie internă. Însă, unul din cele mai des întâlnite web service-uri de acest fel este cel prin SOAP.

De cele mai multe ori furnizorii dau aceste feeduri, oferind credențiale distribuitorilor.

Hai să începem cu partea de codare!

Eu am pus prima dată un time limit 0, asta deoarece unele feeduri poti fi foaaaaaaaaaaaarte mari. Așa că, nu strică o măsură de siguranță.

<php
set_time_limit(0);

Apoi trebuie să ne conectăm la feed și să facem un request:

$url = "http://b2b.domeniu.com/ia_si_afiseaza_un_xml";
$xmlRequest = '<?xml version="1.0" encoding="utf-8"?>
    <PRICELIST_REQUEST>
        <CUSTOMER_NUMBER>31312</CUSTOMER_NUMBER>
        <LOGIN>863232</LOGIN>
        <PASSWORD>miorlau$</PASSWORD>
    </PRICELIST_REQUEST>';

Și apoi prin curl să tipărim datele necesare:

$headers = array(
    "Content-type: text/xml"
);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
    
$data = curl_exec($ch);

echo $data;
//$xml = simplexml_load_string($data);
//var_dump($xml); - asta în cazul în care aveți erori și vreți să le tipăriți
?>

Mă rog, asta este o chestie cât se poate de generală și poate suferi modificări, mai ales în funcție de indicațiile date de către furnizorul de feed.
Succes!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.