XML-RPC è un protocollo utilizzato in informatica che permette di eseguire delle chiamate a procedure remote (RPC) attraverso la rete Internet.

Questo protocollo si basa sullo standard XML per codificare la richiesta che viene trasportata mediante il protocollo HTTP o HTTPS. Nonostante la sua semplicità, permette di trasmettere strutture dati complesse, chiederne l'esecuzione e averne indietro il risultato.

Utilizzo XML-RPC funziona inviando una richiesta HTTP al server che implementa il protocollo. Il client in questo caso è tipicamente del software che vuole invocare un singolo metodo su di un sistema remoto. Al metodo remoto possono essere passati parametri di input multipli e viene restituito un solo valore di ritorno. I tipi di parametri permettono di nidificare i parametri stessi in liste e mappe, in modo da poter trasportare strutture di più grandi dimensioni. Quindi XML-RPC può essere utilizzato per trasportare oggetti o strutture sia come parametri di input che per restituire i valori di output.

L'"identificazione" del client per scopi di autorizzazione può essere ottenuta utilizzando i noti metodi di sicurezza di HTTP. Per l'identificazione viene utilizzata la basic access authentication, HTTPS viene invece utilizzato quando si ha necessità di identificazione (attraverso certificati) e messaggi criptati. Entrambi i metodi possono comunque essere combinati. A differenza di REST, in cui vengono trasferite "rappresentazioni di risorse" (documenti) XML-RPC è progettato per "invocare metodi".

XML-RPC è più semplice da utilizzare e da capire rispetto a SOAP perché: Permette un solo modo per serializzare i metodi, invece SOAP definisce molti encodings differenti. Ha un modello di sicurezza più semplice. Non richiede (né supporta) la creazione di descrizioni di servizio WSDL, sebbene XRDL offra un semplice subset delle funzionalità fornite da WSDL.

JSON-RPC è molto simile ad XML-RPC, la differenza sostanziale sta nel fatto che i dati vengono incapsulati in pacchetti JSON anziché XML.

Tipi di dato I tipi di dato più comuni possono essere convertiti nel loro equivalente XML secondo gli esempi mostrati di seguito: NomeEsempioDescrizionearray<array> <data> <value><i4>1404</i4></value> <value><string>Something here</string></value> <value><i4>1</i4></value> </data> </array>Array non associativo (senza chiavi)base64<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>Dati binari codificati in Base64boolean<boolean>1</boolean>Booleano (0 or 1)date/time<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>Data e ora in formato ISO 8601double<double>-12.53</double>Double, numero in virgola mobileinteger<int>42</int> o <i4>42</i4>Numero interostring<string>Hello world!</string> o Hello world!Stringa di caratteri. Deve seguire le regole di codifica di XML.struct<struct> <member> <name>foo</name> <value><i4>1</i4></value> </member> <member> <name>bar</name> <value><i4>2</i4></value> </member> </struct>Array associativonil<nil/>Valore nullo

Esempi Un esempio di richiesta XML-RPC tipica può essere: <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall>

Se la richiesta va in porto, XML-RPC produrrà una risposta del tipo: <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse>

Altrimenti la risposta sarà del tipo: <?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> <member> <name>faultString</name> <value><string>Troppi parametri.</string></value> </member> </struct> </value> </fault> </methodResponse>

Voci correlate Chiamata di procedura remota SOAP gRPC Cap'n Proto Apache Thrift Apache Avro JSON-RPC

Collegamenti esterni

Categoria:Protocolli livello applicazione