Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 53 di 67
  • livello intermedio
Indice lezioni

SOAP Web Service con PHP: il client

Dopo realizzato il server della nostra piattaforma PHP per i Web service, siamo pronti ad effettuare chiamate SOAP indirizzandole ad esso tramite un client.
Dopo realizzato il server della nostra piattaforma PHP per i Web service, siamo pronti ad effettuare chiamate SOAP indirizzandole ad esso tramite un client.
Link copiato negli appunti

Dopo aver realizzato il server, siamo pronti a questo punto ad effettuare chiamate SOAP indirizzandole ad esso. Per farlo utilizziamo un semplice client in PHP, fermo restando che il client potrebbe essere scritto in qualsiasi altro linguaggio vista la natura dei Web Server.

Anche in questo caso prima di procedere aggiungiamo qualche riga di codice necessaria al nostro esempio. Impostiamo una durata molto breve della cache e definiamo la classe Book:

//client.php
ini_set('soap.wsdl_cache_ttl', 1);
class Book
{
    public $name;
    public $year;
}

Definiamo quindi il client attraverso la classe SoapClient. La firma del costruttore è esattamente la stessa del server, la differenza sta nel fatto che il path del file WSDL sarà nella maggior parte dei casi remoto.

$client = new SoapClient(
        //http://example.com/books.wsdl in caso di chiamata remota
        dirname(__FILE__) . '/books.wsdl',
        [
            'classmap' => [
                'book' => 'Book',
            ]
        ]
    );

Nel nostro esempio, trattandosi di una procedura in locale, utilizziamo un path assoluto per richiamare il file WSDL. Nel caso in cui il client non sia nella stessa macchina del server potremmo utilizzare invece il protocollo HTTP come nell'esempio commentato.

Ora che abbiamo definito il nostro client possiamo richiamare la funzione getBook definita nel file WSDL:

$response = $client->getBook(1);
$book = $response->enc_value;
var_dump($book);

Eseguendo un dump della variabile book vedremo che si tratta di un oggetto di tipo Book con le proprietà correttamente settate:

object(Book)#2 (2) {
  ["name"]=>
  string(21) "The Lord of the Rings"
  ["year"]=>
  string(4) "2017"
}

Il codice completo dell'esempio:

<?php
ini_set('soap.wsdl_cache_ttl', 1);
class Book
{
    public $name;
    public $year;
}
$client = new SoapClient(
        dirname(__FILE__) . '/books.wsdl',
        array(
                'classmap' => array('book' => "Book"),
        )
);
$response = $client->getBook(1);
var_dump($response->enc_value);

Nel caso avessimo la necessità di debuggare le funzionalità messe a disposizione dal nostro server SOAP, potremmo utilizzare il metodo __getFunctions() che restituirà un array con tutte le operazioni definite dal file WSDL.

Ti consigliamo anche