XML-RPC

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

XML-RPC este un protocol utilizat în informatică care vă permite să executați apeluri către proceduri la distanță ( RPC ) prin Internet .

Acest protocol se bazează pe standardul XML pentru a codifica cererea care este transferată prin protocolul HTTP sau HTTPS . În ciuda simplității sale, vă permite să transmiteți structuri de date complexe, să solicitați executarea acestora și să obțineți rezultatul înapoi.

Utilizare

XML-RPC funcționează prin trimiterea unei cereri HTTP către serverul care implementează protocolul. În acest caz, clientul este de obicei un software care dorește să invoce o singură metodă pe un sistem la distanță. Mai mulți parametri de intrare pot fi transferați la metoda de la distanță și se returnează o singură valoare returnată. Tipurile de parametri vă permit să cuibăriți parametrii înșiși în liste și hărți, astfel încât să poată fi transportate structuri mai mari. Prin urmare, XML-RPC poate fi utilizat pentru a transporta obiecte sau structuri atât ca parametri de intrare, cât și pentru a returna valorile de ieșire.

„Identificarea” clientului în scopul autorizării poate fi realizată utilizând metode de securitate HTTP bine cunoscute. Autentificarea de acces de bază este utilizată pentru identificare, în timp ce HTTPS este utilizat atunci când este necesară identificarea (prin certificate) și mesajele criptate. Cu toate acestea, ambele metode pot fi combinate. Spre deosebire de REST , unde „reprezentări de resurse” (documente) sunt transmise XML-RPC este conceput pentru a „invoca metode”.

XML-RPC este mai ușor de utilizat și de înțeles decât SOAP deoarece:

  • Permite o singură modalitate de serializare a metodelor, în schimb SOAP definește multe codificări diferite.
  • Are un model de securitate mai simplu.
  • Nu necesită (și nici nu acceptă) crearea descrierilor de servicii WSDL , deși XRDL oferă un subset simplu de funcționalități furnizate de WSDL.

JSON-RPC este foarte similar cu XML-RPC, diferența principală este că datele sunt încapsulate mai degrabă în pachete JSON decât XML.

Tipuri de date

Cele mai comune tipuri de date pot fi convertite în echivalentul lor XML conform exemplelor prezentate mai jos:

Nume Exemplu Descriere
matrice
<matricea>
  <data>
    <value> <i4> 1404 </i4> </value>
    <value> <string> Ceva aici </string> </value>
    <value> <i4> 1 </i4> </value>
  </data>
</array>
Matrice non-asociativă (fără cheie)
baza64
<base64> eW91IGNhbid0IHJlYWQgdGhpcyE = </base64>
Date binare codificate Base64
boolean
<boolean> 1 </boolean>
Boolean (0 sau 1)
data / ora
<dateTime.iso8601> 19980717T14: 08: 55 </dateTime.iso8601>
Data și ora în format ISO 8601
dubla
<double> -12,53 </double>
Număr dublu , cu virgulă mobilă
întreg
<int> 42 </int>

sau

 <i4> 42 </ i4>
Număr întreg
şir
<string> Bună lume! </string>

sau

 Salut Lume!
Șir de caractere. Trebuie să respecte regulile de codificare XML.
struct
<struct>
  <membr>
    <name> foo </name>
    <value> <i4> 1 </i4> </value>
  </member>
  <membr>
    <name> bar </name>
    <value> <i4> 2 </i4> </value>
  </member>
</struct>
Matrice asociativă
zero
<nil />
Valoare nulă

Exemple

Un exemplu de cerere tipică XML-RPC ar putea fi:

 <? xml version = "1.0"?>
<methodCall>
  <methodName> examples.getStateName </methodName>
  <param>
    <param>
        <value> <i4> 40 </i4> </value>
    </param>
  </params>
</methodCall>

Dacă cererea se finalizează, XML-RPC va produce un răspuns ca:

 <? xml version = "1.0"?>
<methodResponse>
  <param>
    <param>
        <value> <string> South Dakota </string> </value>
    </param>
  </params>
</methodResponse>

În caz contrar, răspunsul va fi ca:

 <? xml version = "1.0"?>
<methodResponse>
  <fault>
    <valor>
      <struct>
        <membr>
          <name> faultCode </name>
          <value> <int> 4 </int> </value>
        </member>
        <membr>
          <name> faultString </name>
          <valor> <șir> Prea mulți parametri. </string> </value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

Elemente conexe

linkuri externe