XML-RPC (z angličtiny e X tensible M arkup L jazyk Remote Procedure Call - XML vzdálené volání procedur) je standard/ protokol vzdáleného volání procedur, který používá XML ke kódování svých zpráv a HTTP jako transportní mechanismus [1] . Je předchůdcem SOAP a je výjimečně snadno použitelný. XML-RPC, stejně jako jakékoli jiné rozhraní vzdáleného volání procedur (RPC), definuje sadu standardních datových typů a příkazů, které může programátor použít k přístupu k funkcím jiného programu umístěného na jiném počítači v síti .
Protokol XML-RPC původně vyvinul Dave Winer z UserLand Software ve spolupráci s Microsoftem v roce 1998 . Microsoft však brzy shledal tento protokol příliš zjednodušeným a začal rozšiřovat jeho funkčnost. Po několika cyklech rozšiřování funkčnosti se objevil systém nyní známý jako SOAP. Později Microsoft začal široce inzerovat a implementovat SOAP a původní XML-RPC bylo odmítnuto. Ale i přes jeho odmítnutí ze strany Microsoftu, standard XML-RPC fascinoval mnoho programátorů svou mimořádnou jednoduchostí a díky tomu existuje dodnes a dokonce si postupně získává na popularitě.
Zadejte název | Příklad značky | Popis typu |
---|---|---|
pole | <pole> <data> <value><i4> 1404 </i4></value> <value><string> Cokoli zde </string></value> <value><i4> 1 </i4></value> </data> </array> | Pole hodnot, žádné klíče |
základ 64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Binární data zakódovaná v Base64 |
booleovský | <boolean> 1 </boolean> | Booleovská hodnota (0 nebo 1) |
čas schůzky | <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601> | datum a čas |
dvojnásobek | <double> -12,53 </double> | Zlomková hodnota s dvojnásobnou přesností |
celé číslo | <i4> 42 </i4> | Celé číslo |
tětiva | <string> Ahoj světe! </string> | Řetězec znaků (ve stejném kódování jako celý dokument XML ) |
strukturovat | <struct> <member> <name> Něco </name> <value><i4> 1 </i4></value> </member> <member> <name> Něco jiného </name> < value><i4 > 2 </i4></value> </member> </struct> | Pole hodnot s klíči |
nula | <nula/> | Hodnota Null (prázdná) je rozšíření XML-RPC |
Typický příklad požadavku XML-RPC:
<?xml version="1.0"?> <methodCall> <methodName> example.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </methodCall>Typický příklad odpovědi na požadavek XML-RPC:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Jižní Dakota </string></value> </param> </params> </methodResponse>Typický příklad chyby v požadavku XML-RPC:
<?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>V tomto případě lze tagy s datovým typem při přenosu z klienta vynechat a vůbec je nespecifikovat.
Nedávní kritici (od roku 2010) XML-RPC tvrdí, že volání RPC lze provádět pomocí prostého XML a že XML-RPC nepřidává žádnou hodnotu oproti XML. XML-RPC i XML vyžadují datový model na úrovni aplikace, jako jsou názvy polí definované ve schématu XML nebo názvy parametrů v XML-RPC. Navíc XML-RPC používá ke kódování stejných objektů asi 4krát více bajtů než běžný XML, což je samo o sobě ve srovnání s JSON podrobné .