O sa dau exemplul de acolo pentru apelul functiei si raspunsul primit.
Cod: |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getProductDetails xmlns="http://warehouse.example.com/ws"> <productId>827635</productId> </getProductDetails> </soap:Body> </soap:Envelope> |
La care se poate primi raspunsul:
Cod: |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getProductDetailsResponse xmlns="http://warehouse.example.com/ws"> <getProductDetailsResult> <productName>Toptimate 3-Piece Set</productName> <productId>827635</productId> <description>3-Piece luggage set. Black Polyester.</description> <price>96.50</price> <inStock>true</inStock> </getProductDetailsResult> </getProductDetailsResponse> </soap:Body> </soap:Envelope> |
Aceste lucruri sint disponibile si in PHP prin intermediul unur librarii care simplifica lucrurl cu SOAP. O sa spun aici despre NuSOAP dezvoltata de Dietrich Ayala, disponibila la http://dietrich.ganx4.com/nusoap/index.php (open-source).
O sa dau aici un exemplu concret de folosire a acestei librarii pentru integrarea in site-ul dvs. a cautarii cu Google.com, insa nu doar afisarea unui link care deschide Google. Exista la Google.com niste web service-uri care folosesc SOAP si care pot fi folosite pentru a integra cautarea lor cu orice alt site sau chiar aplicatie prin intermediu unor functii (API). Detalii gasiti la http://www.google.ca/intl/en/apis/. Trebuie o inregistrare gratuita de unde o sa primiti un cod de folosit in cod. Apoi puteti dezvolta pagina de cautare folosita pe site-ul dvs. care afiseaza rezultatele direct pe pagina (nu in pagini la Google.com).
Folosirea acestor librarii este relativ simpla:
- Dupa instalarea (copierea) pe server a librariei pt. SOAP folosite (NuSOAP aici) se face un include la fisierele ei;
- Se creaza un obiect SOAP Client;
- Se initializeaza parametrii;
- Se executa cautarea apelind functiile web service-ului (Google.com aici);
- Se afiseaza rezultatele.
Concret:
Cod: |
// Include libraria NuSOAP require_once('nusoap.php'); // Seteaza parametrii $parameters = array( 'key'=>'......', // cheia data de Google.com 'q' => "programare.org", // cuvint cheie de cautat 'start' => 0, // pagina de start 'maxResults' => '10', // nr. de intrari pe pagina 'filter' => 'false', 'restrict' => '', 'safeSearch' => 'false', 'lr' => '', 'ie' => 'latin', 'oe' => 'latin' ); $soapclient = new soapclient ('http://api.google.com/GoogleSearch.wsdl', 'wsdl'); $results = $soapclient->call('doGoogleSearch',$parameters); if ( is_array($results['resultElements']) ) { print "<p><b>Cautarea pentru 'programare.org' a gasit ". $results['estimatedTotalResultsCount'] . " intrari:</b></p>"; foreach ( $results['resultElements'] as $result ) { print "<p><a href='" . $result['URL'] . "' target='_blank'>" . ( $result['title'] ? $result['title'] : 'no title' ) . "</a><br />" . $result['URL'] . "<br />" . ( $result['snippet'] ? $result['snippet'] : 'no snippet' ) . "<br><span class='g'>".$result['URL']."</span></p>"; } } else { // Daca nu returneaza nimic print "<b>Cautarea cu Google.com nu a returnat nimic</b>"; } |
Dupa cum vedeti detaliile complicate de codate XML a apelului functiei cu toti parametrii sai este realizata de libraria NuSOAP care in final ofera raspunsul intr-un sir simplu de folosit.
Acesta este un exemplu de creare a unui client SOAP care foloseste un web service existent chemind functiile lui. Insa se pot crea si servere SOAP care sa raspunda la apelul altor pagini carora sa le ofere un serviciu de pe site-ul dvs. Insa despre asta in alt articol.