close

XML-RPC

Přejít na navigaci Přejít na hledání

XML-RPC je protokol používaný v informatice, který umožňuje provádět volání vzdálených procedur ( RPC ) přes internet .

Tento protokol se při kódování požadavku přenášeného protokolem HTTP nebo HTTPS opírá o standard XML . Přes svou jednoduchost umožňuje přenášet složité datové struktury, požadovat jejich provedení a mít výsledek zpět.

Použití

XML-RPC funguje tak, že odešle HTTP požadavek na server implementující protokol. Klientem je v tomto případě obvykle software, který chce na vzdáleném systému vyvolat jedinou metodu. Vzdálené metodě lze předat více vstupních parametrů a vrátí se pouze jedna návratová hodnota. Typy parametrů umožňují vnořit samotné parametry do seznamů a map, takže lze přenášet větší struktury. Proto lze XML-RPC použít k přenosu objektů nebo struktur jako vstupních parametrů i k vrácení výstupních hodnot.

"Identifikace" klienta pro účely autorizace může být dosažena pomocí dobře známých metod zabezpečení HTTP. K identifikaci se používá základní přístupová autentizace , zatímco HTTPS se používá, když je vyžadována identifikace (prostřednictvím certifikátů) a šifrované zprávy. Oba způsoby je však možné kombinovat. Na rozdíl od REST , kde jsou předávány „reprezentace zdrojů“ (dokumenty), je XML-RPC navrženo tak, aby „vyvolávalo metody“.

XML-RPC je jednodušší na použití a pochopení než SOAP , protože:

  • Umožňuje pouze jeden způsob serializace metod, místo toho SOAP definuje mnoho různých kódování.
  • Má jednodušší bezpečnostní model.
  • Nevyžaduje (ani nepodporuje) vytváření popisů služeb WSDL , ačkoli XRDL nabízí jednoduchou podmnožinu funkcí poskytovaných WSDL.

JSON-RPC je velmi podobný XML-RPC, hlavní rozdíl je v tom, že data jsou zapouzdřena v paketech JSON spíše než XML.

Datové typy

Nejběžnější datové typy lze převést na jejich ekvivalent XML podle níže uvedených příkladů:

Jméno Příklad Popis
pole
<array> 
  <data> 
    <value> <i4> 1404 </i4> </value> 
    <value> <string> Něco zde </string> </value> 
    <value> <i4> 1 </i4> </ value> 
  </data> 
</array>
Neasociativní (bezklíčové) pole
základ 64
<base64> eW91IGNhbid0IHJlYWQgdGhpcyE = </base64>
Binární data zakódovaná v Base64
booleovský
<boolean> 1 </boolean>
Boolean (0 nebo 1)
čas schůzky
<dateTime.iso8601> 19980717T14: 08: 55 </dateTime.iso8601>
Datum a čas ve formátu ISO 8601
dvojnásobek
<double> -12,53 </double>
Dvojité číslo s pohyblivou řádovou čárkou
celé číslo
<int> 42 </int>

nebo

42 _ _
Celé číslo
tětiva
<string> Ahoj světe! </string>

nebo

Ahoj světe!
Řetězec znaků . Musí dodržovat pravidla kódování XML.
strukturovat
<struct> 
  <member> 
    <name> foo </name> 
    <value> <i4> 1 </i4> </value> 
  </member> 
  <member> 
    <name> bar </name> 
    <value> <i4> 2 </i4> </value> 
  </member> 
</struct>
Asociativní pole
nula
<nula />
Nulová hodnota

Příklady

Příklad typického požadavku XML-RPC může být:

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

Pokud požadavek projde, XML-RPC vygeneruje odpověď jako:

<? xml version = "1.0"?> 
<methodResponse> 
  <params> 
    <param> 
        <value> <string> Jižní Dakota </string> </value> 
    </param> 
  </params> 
</methodResponse>

Jinak bude odpověď vypadat takto:

<? xml version = "1.0"?> 
<methodResponse> 
  <fault> 
    <value> 
      <struct> 
        <member> 
          <name> faultCode </name> 
          <value> <int> 4 </int> </value> 
        </ member> 
        <member> 
          <name> faultString </name> 
          <value> <string> Příliš mnoho parametrů. </string> </value> 
        </member> 
      </struct> 
    </value> 
  </fault> 
</methodResponse>

Související položky

Externí odkazy