<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=XML-RPC</id>
		<title>XML-RPC - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=XML-RPC"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=XML-RPC&amp;action=history"/>
		<updated>2026-05-01T21:45:43Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=XML-RPC&amp;diff=169238&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=XML-RPC&amp;diff=169238&amp;oldid=prev"/>
				<updated>2013-06-21T13:37:02Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Starší verze&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Verze z 21. 6. 2013, 13:37&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=XML-RPC&amp;diff=169237&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=XML-RPC&amp;diff=169237&amp;oldid=prev"/>
				<updated>2009-05-11T22:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''XML-RPC''' je protokol, s jehož pomocí lze velice jednoduše provádět [[vzdálené volání procedur]]. XML-RPC nepřineslo do světa vzdáleného volání procedur novou technologii. Jedná se totiž o soubor pravidel, které pouze říkají, jak použít již funkční a dokonce standardizované technologie pro potřeby [[RPC]]. Data jsou zapouzdřena pomocí značkovacího jazyka [[XML]] (eXtensible Markup Language) a přenášena díky protokolu [[HTTP]]. Taková koncepce umožňuje aplikacím, napsaných v různých programovacích jazycích, komunikaci mezi různými počítačovými architekturami a jejich [[operační systém|operačními systémy]].&lt;br /&gt;
&lt;br /&gt;
V současné době je projekt ukončen, nicméně stal se předlohou pro protokol [[SOAP]].&lt;br /&gt;
&lt;br /&gt;
== Specifikace ==&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá na bázi klient-server. Klient odešle serveru požadavek na vykonání činnosti, server požadavek zpracuje a zpět klientovi vrátí buď odpověď, nebo chybu. Každá ze zpráv, které si mezi sebou klient se serverem vyměňují, se skládá z hlavičky a samotného těla zprávy.&lt;br /&gt;
&lt;br /&gt;
=== Specifikace požadavku ===&lt;br /&gt;
&lt;br /&gt;
==== Hlavička ====&lt;br /&gt;
&lt;br /&gt;
První údaj v prvním řádku hlavičky požadavku indikuje druh dotazu, což je v případě XML-RPC vždy „[[POST]]“. Druhá položka nese informaci o umístění XML-RPC serveru (tzv. [[URI]]). Neexistuje žádný zvláštní požadavek na URI, může být zadáno třeba jen lomítko, nebo může být dokonce prázdné. Třetím údaj definuje verzi a druh protokolu – pro potřeby XML-RPC se používá „HTTP/1.0“. Další čtyři řádky se skládají vždy z názvu položky a hodnoty („název: hodnota“) a jsou povinné. První ze čtveřice – „[[user-agent|User-agent]]“ – obvykle informuje druh a verzi implementace. Řádek „Host“ určuje adresu počítače, na kterém běží XML-RPC server. „[[content-type|Content-Type]]“ značí druh odesílaných dat, musí mít vždy hodnotu „text/xml“. „[[content-length|Content-length]]“ udává délku dokumentu a ta musí být správně určena.&lt;br /&gt;
&lt;br /&gt;
 POST /server HTTP/1.0&lt;br /&gt;
 User-Agent: identifikace_klienta&lt;br /&gt;
 Host: xmlrpc.moje-domena.cz&lt;br /&gt;
 Content-Type: text/xml&lt;br /&gt;
 Content-length: pocet_znaku&lt;br /&gt;
&lt;br /&gt;
==== Tělo ====&lt;br /&gt;
&lt;br /&gt;
Tělo požadavku musí uvozovat značka „&amp;lt;methodCall&amp;gt;“. Jedná se o párovou značku, jejímž uzavíracím ekvivalentem „&amp;lt;/methodCall&amp;gt;“ je potřeba tělo, respektive celý dokument, ukončit. Uvnitř této značky se nachází párová značka „&amp;lt;methodName&amp;gt;“, udávající název volané [[procedura|procedury]] (volaná procedura nemusí být ve skutečnosti procedurou, lze stejně dobře jako proceduru volat například tabulku či sloupec tabulky v databázi, záleží na konkrétní implementaci XML-RPC). V názvu procedury se smí vyskytovat pouze velká a malá písmenka A-Z, číslice 0-9, podtržítko, tečka, pomlčka a lomítko. Zároveň podle specifikace záleží jen na [[server|serveru]], jak se vypořádat se znaky v názvu procedury. Po značkách „&amp;lt;methodName&amp;gt;“ následuje seznam parametrů předávaných vzdálené proceduře (pokud tato nějaké vyžaduje, v opačném případě není nutné, dokonce ani povolené, je uvádět). Parametry se uvozují párovými značkami „&amp;lt;params&amp;gt;“, mezi něž lze vložit libovolný počet parametrů (slovem „libovolný“ míním, že specifikace jejich počet nikterak neomezuje, počet omezuje pouze definice procedury). Každý parametr je uzavřen mezi značkami „&amp;lt;param&amp;gt;“, v nichž se nachází jeho hodnota mezi značkami „&amp;lt;value&amp;gt;“ s volitelnou definicí [[datové typy|datového typu]] (obecně se doporučuje datový typ uvádět vždy pro zlepšení čitelnosti nebo pro předejití chyb z nepozornosti). Pokud existuje definice parametru, musí obsahovat značky „&amp;lt;value&amp;gt;“.&lt;br /&gt;
&lt;br /&gt;
 POST /server HTTP/1.0&lt;br /&gt;
 User-Agent: identifikace_klienta&lt;br /&gt;
 Host: xmlrpc.moje-domena.cz&lt;br /&gt;
 Content-Type: text/xml&lt;br /&gt;
 Content-length: pocet_znaku&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;methodCall&amp;gt;&lt;br /&gt;
 	&amp;lt;methodName&amp;gt;trida.jmenoMetody&amp;lt;/methodName&amp;gt;&lt;br /&gt;
 	&amp;lt;params&amp;gt;&lt;br /&gt;
 		&amp;lt;param&amp;gt;&lt;br /&gt;
 			&amp;lt;value&amp;gt;&amp;lt;int&amp;gt;250&amp;lt;/int&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 		&amp;lt;/param&amp;gt;&lt;br /&gt;
 	&amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/methodCall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specifikace odpovědi ===&lt;br /&gt;
&lt;br /&gt;
==== Hlavička ====&lt;br /&gt;
&lt;br /&gt;
První položka prvního řádku značí verzi protokolu (vždy HTTP/1.1), za ní následuje [[stavový kód]], který má ve většině případů hodnotu 200 OK, což znamená, že server obdržel požadavek a posílá odpověď (jiný stavový kód může být vrácen například v případě, že serverová část je napsána v jazyce [[PHP]], jenž se dost často zavádí jako modul do [[webový server|webového serveru]] [[Apache HTTP Server|Apache]], ten může v případě chyby vyslat i jiný, než „200 OK“ stavový kód).&lt;br /&gt;
&lt;br /&gt;
Řádek „Connection“ obsahuje hodnotu „close“, díky čemuž klient pozná, že pokud chce serveru opět vyslat požadavek, musí navázat nové připojení. „Content-Length“ opět udává délku dokumentu a taktéž vyžaduje korektní hodnotu. Pole „Content-type“, stejně jako v hlavičce požadavku, nabývá pouze hodnot „text/xml“. Řádek „Date“ předává informaci o době odeslání odpovědi a to ve formátu RFC 822, updatovaném RFC 1123, který je považován za [[internet|internetový]] standard (existují ještě dva další formáty data a času, s nimiž si musí být případní klienti/servery schopní poradit; je to důsledek zpětné kompatibility mezi protokoly HTTP/1.0 a HTTP/1.1, přestože odpověď není možné odeslat jinak než v HTTP/1.1, tento protokol však umožňuje odesílat datum pouze ve zmíněném formátu RFC 822/RFC 1123). Poslední položka hlavičky, a sice položka „Server“, informuje o jménu serveru odesílajícího odpověď.&lt;br /&gt;
&lt;br /&gt;
 HTTP/1.1 200 OK&lt;br /&gt;
 Connection: close&lt;br /&gt;
 Content-Length: pocet_znaku&lt;br /&gt;
 Content-Type: text/xml&lt;br /&gt;
 Date: Fri, 29 May 2007 16:31:06 GMT&lt;br /&gt;
 Server: identifikace_serveru&lt;br /&gt;
&lt;br /&gt;
==== Tělo ====&lt;br /&gt;
Tělo odpovědi tvoří velice jednoduchá XML struktura – značky „&amp;lt;methodResponse&amp;gt;“, mezi kterými se, na rozdíl od dotazu, musí vyskytnout párová značka „&amp;lt;params&amp;gt;“. Taktéž uvnitř musí existovat alespoň jedna značka „&amp;lt;param&amp;gt;“ obsahující hodnotu, případně datový typ.&lt;br /&gt;
&lt;br /&gt;
 HTTP/1.1 200 OK&lt;br /&gt;
 Connection: close&lt;br /&gt;
 Content-Length: pocet_znaku&lt;br /&gt;
 Content-Type: text/xml&lt;br /&gt;
 Date: Fri, 29 May 2007 16:35:15 GMT&lt;br /&gt;
 Server: identifikace_serveru&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;methodResponse&amp;gt;&lt;br /&gt;
 	&amp;lt;params&amp;gt;&lt;br /&gt;
 		&amp;lt;param&amp;gt;&lt;br /&gt;
 			&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;Text odpovědi&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 		&amp;lt;/param&amp;gt;&lt;br /&gt;
 	&amp;lt;/params&amp;gt;&lt;br /&gt;
 &amp;lt;/methodResponse&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specifikace chybové odpovědi ===&lt;br /&gt;
&lt;br /&gt;
==== Hlavička ====&lt;br /&gt;
&lt;br /&gt;
Stejná jako hlavička odpovědi, protože chybová odpověď je také odpovědí, pouze se striktně definovanou strukturou těla.&lt;br /&gt;
&lt;br /&gt;
==== Tělo ====&lt;br /&gt;
&lt;br /&gt;
Tělo chybové odpovědi se uvozuje značkami „&amp;lt;methodResponse&amp;gt;“ následovanými&lt;br /&gt;
značkami „&amp;lt;fault&amp;gt;“ - jakýsi ekvivalent k „&amp;lt;param&amp;gt;“, ovšem bez vnějšího „&amp;lt;params&amp;gt;“. Uvnitř se&lt;br /&gt;
nachází značka „&amp;lt;value&amp;gt;“ obsahující datový typ „struct“. Struct má zde dva členy, první – „faultCode“ – udává číslo&lt;br /&gt;
chyby, „faultString“ v sobě nese textovou část chyby. Toto číslo ani text není definováno, pouze se&lt;br /&gt;
musí dodržet datové typy, jinak záleží čistě na implementátorovi serveru, jaká čísla si pro chyby&lt;br /&gt;
vymyslí (existuje rozšíření definující několik běžných chyb, má však pouze doporučující&lt;br /&gt;
charakter, nikoliv závazný). &lt;br /&gt;
&lt;br /&gt;
'''Důležité upozornění:''' odpověď, ať už běžná nebo chybová, smí&lt;br /&gt;
obsahovat buď „&amp;lt;params&amp;gt;“, nebo „&amp;lt;fault&amp;gt;“. Jiné struktury nejsou přípustné a slovo „nebo“ je míněno&lt;br /&gt;
ve vylučovacím smyslu (tzn. nemohou nastat obě možnosti zároveň).&lt;br /&gt;
&lt;br /&gt;
 HTTP/1.1 200 OK&lt;br /&gt;
 Connection: close&lt;br /&gt;
 Content-Length: pocet_znaku&lt;br /&gt;
 Content-Type: text/xml&lt;br /&gt;
 Date: Fri, 29 May 2007 16:35:15 GMT&lt;br /&gt;
 Server: identifikace_serveru&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;methodResponse&amp;gt;&lt;br /&gt;
 	&amp;lt;fault&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&lt;br /&gt;
 			&amp;lt;struct&amp;gt;&lt;br /&gt;
 				&amp;lt;member&amp;gt;&lt;br /&gt;
 					&amp;lt;name&amp;gt;faultCode&amp;lt;/name&amp;gt;&lt;br /&gt;
 					&amp;lt;value&amp;gt;&amp;lt;int&amp;gt;32001&amp;lt;/int&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 				&amp;lt;/member&amp;gt;&lt;br /&gt;
 				&amp;lt;member&amp;gt;&lt;br /&gt;
 					&amp;lt;name&amp;gt;faultString&amp;lt;/name&amp;gt;&lt;br /&gt;
 					&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;Text chyby&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 				&amp;lt;/member&amp;gt;&lt;br /&gt;
 			&amp;lt;/struct&amp;gt;&lt;br /&gt;
 		&amp;lt;/value&amp;gt;&lt;br /&gt;
 	&amp;lt;/fault&amp;gt;&lt;br /&gt;
 &amp;lt;/methodResponse&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datové typy ===&lt;br /&gt;
XML-RPC definuje šest jednorozměrných a dva vícerozměrné datové typy.&lt;br /&gt;
&lt;br /&gt;
==== Jednorozměrné datové typy ====&lt;br /&gt;
&lt;br /&gt;
'''Tabulka 1: datové typy&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Značka'''&lt;br /&gt;
|'''Typ'''&lt;br /&gt;
|'''Příklad'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;i4&amp;gt; nebo &amp;lt;int&amp;gt;&lt;br /&gt;
|32-bitové celé číslo ([[integer]])&lt;br /&gt;
|&amp;lt;int&amp;gt;-12&amp;lt;/int&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;double&amp;gt;&lt;br /&gt;
|Číslo s plovoucí řádovou tečkou ([[double]]) &lt;br /&gt;
|&amp;lt;double&amp;gt;-123.21&amp;lt;/double&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;boolean&amp;gt;&lt;br /&gt;
|Booleovská hodnota - false nebo true &lt;br /&gt;
|&amp;lt;boolean&amp;gt;true&amp;lt;/boolean&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;string&amp;gt;&lt;br /&gt;
|Textový řetězec ([[string]])&lt;br /&gt;
|&amp;lt;string&amp;gt;Pozdravuj doma&amp;lt;/string&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;dateTime.iso8601&amp;gt;&lt;br /&gt;
|Datum a čas podle normy [[ISO 8601]] &lt;br /&gt;
|&amp;lt;dateTime.iso8601&amp;gt;20070529T16:00:00&amp;lt;/dateTime.iso8601&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;base64&amp;gt;&lt;br /&gt;
|[[Base64]] - kódování binárních dat&lt;br /&gt;
|&amp;lt;base64&amp;gt;eW91IGNhbid0IHJlYWQgdGhpcyE=&amp;lt;/base64&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Poznámka:''' Integer se smí skládat&lt;br /&gt;
pouze z číslic, případně znaménkem před číslem samotným, nesmí obsahovat mezeru. Double navíc obsahuje desetinnou tečku, zároveň ale jeho rozsah záleží na konkrétní implementaci. Typ string povoluje jakékoliv znaky kromě znaku „&amp;lt;“ (menší než) a „&amp;amp;“, tyto dva znaky se převádějí na příslušné entity „&amp;amp;amp;lt;“ a „&amp;amp;amp;amp;“. String lze také použít pro přenost binárních dat. XML-RPC neumí vyjádřit nekonečno, záporné nekonečno nebo [[NaN]] (not a number).&lt;br /&gt;
&lt;br /&gt;
==== Vícerozměrné datové typy ====&lt;br /&gt;
&lt;br /&gt;
===== Array =====&lt;br /&gt;
&lt;br /&gt;
Značka „&amp;lt;array&amp;gt;“ obsahuje jediný blok ohraničený pomocí „&amp;lt;data&amp;gt;“. Vnitřek bloku je složen z libovolného počtu hodnot, každou z nich obklopují dříve popsané značky „&amp;lt;value&amp;gt;“. Hodnoty pole nemají názvy ani indexy, na druhou stranu mohou obsahovat další pole, nebo strukturu.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;array&amp;gt;&lt;br /&gt;
 	&amp;lt;data&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;i4&amp;gt;8&amp;lt;/i4&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;Pepa&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;boolean&amp;gt;false&amp;lt;/boolean&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;double&amp;gt;2100.45&amp;lt;/double&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 	&amp;lt;/data&amp;gt;&lt;br /&gt;
 &amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Struct =====&lt;br /&gt;
&lt;br /&gt;
Druhým datovým typem je „struct“ (struktura), uvozený značkou „&amp;lt;struct&amp;gt;“, v jejímž těle &lt;br /&gt;
lze uvést libovolný počet prvků „&amp;lt;member&amp;gt;“, z nichž každý nese informaci o jméně – „&amp;lt;name&amp;gt;“ –&lt;br /&gt;
a o hodnotě – „&amp;lt;value&amp;gt;“. Obdobně jako pole, i struktura může být rekurzivní, tzn. že jako hodnota&lt;br /&gt;
se dá uložit další struktura, nebo pole.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;struct&amp;gt;&lt;br /&gt;
 	&amp;lt;member&amp;gt;&lt;br /&gt;
 		&amp;lt;name&amp;gt;prvniPolozka&amp;lt;/name&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;Text prvni polozky&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 	&amp;lt;/member&amp;gt;&lt;br /&gt;
 	&amp;lt;member&amp;gt;&lt;br /&gt;
 		&amp;lt;name&amp;gt;druhaPolozka&amp;lt;/name&amp;gt;&lt;br /&gt;
 		&amp;lt;value&amp;gt;&amp;lt;string&amp;gt;Text druhe polozky&amp;lt;/string&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
 	&amp;lt;/member&amp;gt;&lt;br /&gt;
 &amp;lt;/struct&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literatura ==&lt;br /&gt;
{{Citace monografie&lt;br /&gt;
 | příjmení = Schlossnagle&lt;br /&gt;
 | jméno = George&lt;br /&gt;
 | odkaz na autora = &lt;br /&gt;
 | rok = 2004&lt;br /&gt;
 | titul = Pokročilé programování v PHP 5&lt;br /&gt;
 | vydavatel = Zoner Press&lt;br /&gt;
 | místo = Brno&lt;br /&gt;
 | isbn = 80-86815-14-5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Externí odkazy ==&lt;br /&gt;
* [http://www.xmlrpc.com Oficiální stránky XML-RPC protokolu]&lt;br /&gt;
* [http://www.scripting.com/davenet/1998/02/27/rpcOverHttpViaXml.html Historie XML-RPC na blogu jeho autora]&lt;br /&gt;
* [http://validator.xmlrpc.com Validátor XML-RPC serverů]&lt;br /&gt;
* [http://developer.apple.com/documentation/Networking/Conceptual/UsingWebservices/1_intro_folder/chapter_1_section_5.html Srovnání XML-RPC a SOAP]&lt;br /&gt;
* [http://www.xmlrpc.com/directory/1568/services/xmlrpcExtensions Rozšíření XML-RPC]&lt;br /&gt;
* [http://www.xmlrpc.com/directory/1568/implementations Oficiální seznam implementací]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:IP protokoly]]&lt;br /&gt;
[[Kategorie:XML]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>