close

XML-RPC

Salt la navigare Salt la căutare

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

Acest protocol se bazează pe standardul XML pentru a codifica cererea care este transmisă prin protocolul HTTP sau HTTPS . În ciuda simplității sale, vă permite să transmiteți structuri complexe de date, 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. Clientul în acest caz 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 metodei de la distanță și este returnată o singură valoare de returnare. Tipurile de parametri vă permit să încadrați parametrii înșiși în liste și hărți, astfel încât structurile mai mari să poată fi transportate. Prin urmare, XML-RPC poate fi folosit 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 scopuri de autorizare poate fi realizată folosind binecunoscutele metode de securitate HTTP. Autentificarea de bază a accesului 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 sunt transmise „reprezentări de resurse” (documente), 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 a serializa metodele, î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 al funcționalității oferite de WSDL.

JSON-RPC este foarte asemănător cu XML-RPC, principala diferență este că datele sunt încapsulate mai degrabă în pachete JSON decât în ​​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
<array> 
  <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 , în virgulă mobilă
întreg
<int> 42 </int>

sau

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

sau

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

Exemple

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

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

Dacă cererea trece, XML-RPC va produce un răspuns de genul:

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

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

<? 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>

Articole înrudite

Link- uri externe