Content deleted Content added
removed link to deleted page |
Citation bot (talk | contribs) Added work. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Internet protocols | #UCB_Category 165/248 |
||
(26 intermediate revisions by 22 users not shown) | |||
Line 1:
{{Short description|Data serialization format}}
{{Distinguish|text = the use of XML for RPC, independently of the specific protocol. This article is about the protocol named "XML-RPC"}}
{{
{{Use dmy dates|date=December 2021}}
'''XML-RPC''' is a [[remote procedure call]] (RPC) [[Communications protocol|protocol]] which uses [[XML]] to encode its calls and [[HTTP]] as a transport mechanism.<ref name="book1">Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) ''Programming Web Services with XML-RPC.'' O'Reilly. First Edition.</ref>
==History==
The XML-RPC protocol was created in 1998 by [[Dave Winer]] of [[UserLand Software]] and [[Microsoft]],<ref>{{cite web|last=Box|first=Don|title=A Brief History of SOAP
|publisher=[[O'Reilly Media|O'Reilly]]|date=1 April 2001|url=http://www.xml.com/pub/a/ws/2001/04/04/soap.html▼
|
▲|url=http://www.xml.com/pub/a/ws/2001/04/04/soap.html
▲|accessdate=27 October 2010}}</ref> with Microsoft seeing the protocol as an essential part of scaling up its efforts in business-to-business e-commerce.<ref>{{Cite web|last=Rupley |first=Sebastian |title=XML's Next Step |work=PC Magazine |accessdate=2015-11-17 |date=1999-06-30 |url=http://www.zdnet.com/pcmag/stories/trends/0,7607,2286488,00.html |deadurl=yes |archiveurl=https://web.archive.org/web/20000304215507/http://www.zdnet.com/pcmag/stories/trends/0,7607,2286488,00.html |archivedate=4 March 2000 }}</ref> As new functionality was introduced, the standard evolved into what is now [[SOAP (protocol)|SOAP]].<ref name=spearheads>{{Cite news|last=Walsh |first=Jeff |title=Microsoft spearheads protocol push |work=Infoworld |accessdate=2015-11-17 |date=1999-07-10 |url=http://www.infoworld.com/cgi-bin/displayStory.pl?980710.whsoap.htm |deadurl=yes |archiveurl=https://web.archive.org/web/19990914001234/http://www.infoworld.com/cgi-bin/displayStory.pl?980710.whsoap.htm |archivedate=14 September 1999 }}</ref>
UserLand supported XML-RPC from version 5.1 of its Frontier web content management system,<ref name=spearheads /> released in June 1998.<ref>{{cite web| last = Walsh| first = Jeff| title = UserLand releases Frontier 5.1, drops freeware model | work = InfoWorld|
XML-RPC's idea of a human-readable-and-writable, script-parsable standard for HTTP-based requests and responses has also been implemented in competing specifications such as Allaire's [[WDDX|Web Distributed Data Exchange]] (WDDX) and webMethod's [[WIDL (Internet Standard)|Web Interface Definition Language]] (WIDL).<ref>{{Cite news|last=Udell |first=Jon |title=Exploring XML-RPC: DCOM? CORBA? RMI? Why Not Just XML-RPC? |work=Byte |
The generic use of XML for [[remote procedure call]] (RPC) was patented by Phillip Merrick, Stewart Allen, and Joseph Lapp in April 2006, claiming benefit to a provisional application filed in March 1998. The patent
==Usage==
In XML-RPC, a client performs an RPC by sending an HTTP request to a server that implements XML-RPC and
The parameters/result structure and the set of data types are meant to mirror those used in common programming languages.
Line 27 ⟶ 23:
''Identification'' of clients for authorization purposes can be achieved using popular HTTP security methods. [[Basic access authentication]] can be used for identification and authentication.
In comparison to
▲In comparison to [[REST]]ful protocols, where ''resource representations'' (documents) are transferred, XML-RPC is designed to ''call methods''. The practical difference is just that XML-RPC is much more structured, which means common library code can be used to implement clients and servers and there is less design and documentation work for a specific application protocol. One salient technical difference between typical RESTful protocols and
[[JSON-RPC]] is similar to XML-RPC.
Line 43 ⟶ 36:
|array
|
<
<array>
<data>
Line 51 ⟶ 44:
</data>
</array>
</syntaxhighlight>
|[[Array data structure|Array]] of values, storing no keys
|-
|base64
|
<
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
</syntaxhighlight>
|[[Base64]]-encoded binary data
|-
|boolean
|
<
<boolean>1</boolean>
</syntaxhighlight>
|[[Boolean
|-
|date/time
|
<
<dateTime.iso8601>19980717T14:08:
</syntaxhighlight>
|Date and time in [[ISO 8601]] format
|-
|double
|
<
<double>-12.53</double>
</syntaxhighlight>
|[[Double precision]] floating point number
|-
|integer
|
<
<int>42</int>
</syntaxhighlight>
or
<
<i4>42</i4>
</syntaxhighlight>
|
|-
|string
|
<
<string>Hello world!</string>
</syntaxhighlight>
or
<
Hello world!
</syntaxhighlight>
|String of characters. Must follow [[XML#Characters and escaping|XML encoding]].
|-
|struct
|
<
<struct>
<member>
Line 117 ⟶ 110:
</member>
</struct>
</syntaxhighlight>
|[[Associative array]]
|-
|nil
|
<
<nil/>
</syntaxhighlight>
|[[nullable type|Discriminated null value]]; an XML-RPC [https://web.archive.org/web/20050911054235/http://ontosys.com/xml-rpc/extensions.php extension]
|
|-
|long
|
<syntaxhighlight lang="xml">
<i8>1312</i8>
</syntaxhighlight>
|Signed integer coded on 8 bytes. This is not part of the specification, but it is supported by several XML-RPC implementations<ref>{{cite web |title=RPC::XML - A set of classes for core data, message and XML handling - metacpan.org |work=MetaCPAN |url=https://metacpan.org/pod/RPC::XML |access-date=13 April 2025}}</ref>{{,}}<ref>{{cite web |title=User manual for XML-RPC For C/C++ |url=https://xmlrpc-c.sourceforge.io/doc/libgeneral.html |access-date=13 April 2025}}</ref>
|}
==Examples==
An example of a typical XML-RPC request would be:
<
<?xml version="1.0"?>
<methodCall>
Line 140 ⟶ 141:
</params>
</methodCall>
</syntaxhighlight>
An example of a typical XML-RPC response would be:
<
<?xml version="1.0"?>
<methodResponse>
Line 152 ⟶ 153:
</params>
</methodResponse>
</syntaxhighlight>
A typical XML-RPC fault would be:
<
<?xml version="1.0"?>
<methodResponse>
Line 173 ⟶ 174:
</fault>
</methodResponse>
</syntaxhighlight>
== Criticism ==
Line 182 ⟶ 183:
| date = 9 September 2009
| publisher = [[Stack Overflow]]
|
}}
</ref><ref>
Line 189 ⟶ 190:
| title = An open poll on the merits of XmlRpc versus alternatives
| date = 22 November 2006
| publisher =
|
}}
</ref><ref>
Line 199 ⟶ 200:
|date = 14 January 2010
|publisher = joncanady.com
|
|
|
|
}}
</ref>
==See also==
* [[Weblogs.com]]
* [[Pingback]]
*[[Ajax (programming)]]
*[[Software componentry#Technologies for Software Components|Component technologies]]
Line 213 ⟶ 217:
*[[JSON-RPC]]
*[[Web service]]
*[[gRPC]]
==References==
{{Reflist}}
==External links==
* {{web archive|url=https://web.archive.org/web/20130113041824/http://xmlrpc.scripting.com/default.html|title=Official website}}
{{DEFAULTSORT:Xml-Rpc}}
|