XML-RPC
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>