SOAP Web Service con PHP: il client
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.
Se vuoi aggiornamenti su PHP inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Massimo Brignoli, MongoDB e Big Data
Perché utilizzare MongoDB in uno scenario Big Data e l’opportunità di migrare applicazioni già esistenti