2010-11-16 16 views
5

Ho creato un'applicazione web con un componente di mappatura. Voglio utilizzare un altro servizio di geocoding diverso da Google, ma tutti quelli che ho trovato utilizzano SOAP per comunicare con il sito web. Non ho mai usato il sapone prima. Qualcuno sa di buone risorse per aiutarmi a capirlo? Sto usando PHP per integrare l'app Web.Come imparare SOAP?

Modifica: Ho bisogno di usare Soap per il geocoding in questo momento ... quindi se conosci qualche buon servizio anche per quello, sarebbe fantastico. Grazie!

modificare di nuovo: io fondamentalmente bisogno di imparare il sapone in modo da poter interagire con http://www.nn4d.com/site/global/build/web_services/geocoding_reversegeocoding/map24geocoder51service/map24geocoder51service.jsp

+0

Utilizzare una libreria SOAP. Non ne ho usato uno da solo in PHP, ma molte persone che usano uno dei nostri servizi Web usano NuSOAP http://sourceforge.net/projects/nusoap/ Dovrebbe astrarre tutte le cose complicate per te. – Rup

risposta

17

Imparare il SOAP da solo richiede di imparare l'XML e molte cose specifiche per SOAP.

Tuttavia, hai taggato la tua domanda in PHP, quindi presumo che quello che stai effettivamente chiedendo sia imparare a usare un servizio web SOAP attraverso PHP. Questo è diverso dall'apprendimento stesso del SOAP perché il PHP (come la maggior parte degli altri linguaggi) astrae i bit XML disordinati di SOAP e lo trasforma in un oggetto facile da usare.

Questa è la teoria, comunque.

Ci sono due toolkit SOAP in uso comune su PHP. Uno si chiama NuSOAP. Funziona abbastanza bene, ma non è più in sviluppo attivo (è stato scritto prima che PHP fornisse la propria classe SOAP integrata). Se si desidera utilizzare NuSOAP, ecco il sito web ufficiale del progetto: http://nusoap.sourceforge.net/

Se si utilizza PHP5.2 o 5.3 (che si dovrebbe essere, poiché sono le uniche versioni attualmente supportate), allora si Avremo una classe SOAP integrata. Se si desidera utilizzare la classe ufficiale di PHP SOAP, ecco la pagina di manuale: http://php.net/manual/en/book.soap.php

Una volta scelto quale la classe SOAP che si desidera utilizzare, sarà necessario conoscere un po 'di servizi web SOAP in generale, e sul servizio specifico che desideri utilizzare.

In primo luogo, è necessario sapere se il servizio fornisce un WSDL. Un WSDL è un altro documento XML che definisce i metodi e i parametri disponibili sul servizio SOAP. Ciò consente alla classe SOAP di definire una classe per il servizio SOAP, che semplifica la vita per te come programmatore. In pratica in PHP, però, non fa molta differenza.

Si consiglia inoltre di scaricare SOAP UI, che è uno strumento di debug per i servizi SOAP. Permette di vedere e modificare il codice XML esatto inviato e ricevuto.Ti aiuterà a capire e capire come funziona SOAP e ti aiuterà anche nel debugging se il tuo codice PHP non funziona come previsto.

[EDIT] Ovviamente la cosa più importante è conoscere l'API con cui si sta lavorando.

Se il servizio che hai a disposizione ha un WSDL, PHP genererà automaticamente i metodi appropriati per te quando crei l'oggetto. Ad esempio:

$client = new SoapClient("http://somedomain/stockquote.wsdl"); 
print($client->getStockQuote("MSFT")); 

È davvero così semplice. Certo, questo è un esempio abbastanza semplice; la maggior parte dei servizi SOAP (sicuramente quelli che ho usato!) richiedono molti più parametri, e di solito li prendono sotto forma di una gigantesca struttura di array annidati.

Se il servizio non dispone di un WSDL, dovrete chiamare i metodi che utilizzano un metodo leggermente diverso:

$client = new SoapClient(null, array('location' => "http://somedomain/stockquote.asp")); 
print($client->__soapCall('getStockQuote',"MSFT")); 

Spero che ti aiuta a capire un po 'meglio.

Mi raccomando ancora di provare con SOAP UI, in quanto ti aiuterà a capire meglio SOAP in generale molto meglio. Dovresti anche leggere le pagine di manuale della classe SOAP PHP: http://php.net/manual/en/book.soap.php - la documentazione è molto accurata, anche se, come con tutte queste cose, può essere scoraggiante avvicinarsi all'inizio dato che è un riferimento, non un tutorial.

+0

Grazie per l'aiuto. Ho modificato il post per mostrare per cosa esattamente ho bisogno di imparare il sapone. Voglio interagire con una API specifica (anche se sarebbe bello imparare in generale) Da quello che posso dire, questi servizi ricevono una richiesta da un sito web, e sembra che mandino un file xml/soap ... I don lo so davvero, devo ancora capirlo. – Bill

+1

@Phil - Aggiungo un po 'alla mia risposta per cercare di aiutare di più. – Spudley

+0

Fantastico ... grazie per l'aiuto! – Bill

1

Insieme con le altre risposte qui, ho scoperto che ho più imparato SOAP per imparare a usare SoapUI:

http://www.soapui.org/

E 'una ottima app per il debug della tua interfaccia soap e mi ha aiutato tantissimo cercando di capire cosa stava succedendo nelle mie chiamate PHP.