XML-RPC (din limba engleză e X tensible Markup Language Remote Procedure Call - XML remote procedure call) este un standard / protocol de apel de procedură la distanță care utilizează XML pentru a-și codifica mesajele și HTTP ca mecanism de transport [1] . Este precursorul SOAP și este excepțional de ușor de utilizat. XML-RPC, ca orice altă interfață Remote Procedure Call (RPC), definește un set de tipuri standard de date și comenzi pe care un programator le poate folosi pentru a accesa funcționalitatea unui alt program situat pe alt computer.pe net .
Protocolul XML-RPC a fost dezvoltat inițial de Dave Winer de la UserLand Software în colaborare cu Microsoft în 1998 . Cu toate acestea, Microsoft a găsit curând acest protocol prea simplist și a început să-și extindă funcționalitatea. După câteva cicluri de extindere a funcționalității, a apărut sistemul cunoscut acum sub numele de SOAP. Mai târziu, Microsoft a început să facă publicitate pe scară largă și să implementeze SOAP, iar XML-RPC original a fost respins. Dar, în ciuda respingerii sale de către Microsoft, standardul XML-RPC a fascinat mulți programatori prin simplitatea sa extraordinară și, datorită acestui fapt, există până în prezent și chiar câștigă treptat popularitate.
Tastați numele | Exemplu de etichetă | Descriere tip |
---|---|---|
matrice | <matrice> <date> <value><i4> 1404 </i4></value> <value><string> Orice aici </string></value> <value><i4> 1 </i4></value> </date> </array> | Matrice de valori, fără chei |
baza64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Date binare codificate Base64 |
boolean | <boolean> 1 </boolean> | Valoare booleană (0 sau 1) |
data/ora | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601> | data si ora |
dubla | <double> -12,53 </double> | Valoare fracțională dublă precizie |
întreg | <i4> 42 </i4> | Întreg |
şir | <string> Bună lume! </string> | Șir de caractere (în aceeași codificare ca întregul document XML ) |
struct | <struct> <member> <name> Ceva </name> <value><i4> 1 </i4></value> </member> <member> <name> Altceva </name> < value><i4 > 2 </i4></value> </member> </struct> | Matrice de valori, cu chei |
zero | <nil/> | Valoarea nulă (vide) este o extensie XML-RPC |
Un exemplu tipic de solicitare XML-RPC:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </methodCall>Un exemplu tipic de răspuns la o solicitare XML-RPC:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Dakota de Sud </string></value> </param> </params> </methodResponse>Un exemplu tipic de eroare la o solicitare XML-RPC:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </ membru> <member> <name> faultString </name> <value><string> Prea mulți parametri. </string></value> </member> </struct> </value> </fault> </methodResponse>În acest caz, etichetele cu un tip de date pot fi omise atunci când sunt transmise de la client și nu sunt specificate deloc.
Criticii recenti (din 2010 încolo) ale XML-RPC susțin că apelurile RPC pot fi efectuate cu XML simplu și că XML-RPC nu adaugă nicio valoare față de XML. Atât XML-RPC, cât și XML necesită un model de date la nivel de aplicație, cum ar fi numele câmpurilor definite în schema XML sau numele parametrilor în XML-RPC. Mai mult decât atât, XML-RPC folosește de aproximativ 4 ori mai mulți octeți decât XML obișnuit pentru a codifica aceleași obiecte, care este în sine verbos în comparație cu JSON .