- XML-RPC - Summary
- XML-RPC - Examples
- XML-RPC - Fault
- XML-RPC - Response
- XML-RPC - Request
- XML-RPC - Data Model
- XML-RPC - Introduction
- XML-RPC - Home
XML-RPC Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
XML-RPC - Quick Guide
XML-RPC - Introduction
RPC支持远距离程序电话。 如其名称所示,这是一种在遥远的计算机上采用程序或功能的机制。 太平洋共同体秘书处是一个比网络更老的技术。 有效来说,太平洋共同体秘书处为开发商提供了一个确定接口的机制,可以被称作网络。 这些接口可以简单地作为单一功能电话,或像大型亚特兰大一样复杂。
What is XML-RPC ?
XML-RPC是最简单和最无节制的网络服务办法之一,使计算机能够使用其他电脑。
XML-RPC允许各种方案在一个网络中发挥作用或进行程序。
XML-RPC利用《吉大港山区开发计划》将信息从客户计算机传送到服务器计算机。
XML-RPC使用小型XML词汇描述请求和答复的性质。
XML-RPC客户在XML申请中具体规定了程序名称和参数,服务器在XML答复中或者收回过错或回复。
XML-RPC参数是一个简单的类型和内容清单——结构和阵列是最复杂的类型。
XML-RPC没有物体概念,也没有机制列入使用其他XML词汇的信息。
然而,通过XML-RPC和网络服务,网络成为一套程序链接,计算机通过紧凑的线路交流信息。
XML-RPC于1998年初出现;它由用户Land软件出版,最初在边境产品中实施。
Why XML-RPC ?
如果你需要整合多种计算环境,但没有必要直接分享复杂的数据结构,你就会发现,XML-RPC允许你迅速和方便地建立通信。
即使你在单一环境下工作,你也可能会发现,太平洋共同体秘书处的做法使那些具有不同数据模式或处理期望的方案容易连接起来,并且能够提供易于使用的逻辑。
XML-RPC是建立计算机之间各种联系的极好工具。
XML-RPC提供了利用标准词汇和信息交流方法的机会。
XML-RPC是最明显的应用领域,它连接了不同类型的环境,使 Java能够与Perl、Adhur、ASP等进行交谈。
XML-RPC Technical Overview
XML-RPC由三个相对较小的部分组成:
XML-RPC数据模型: 一系列用于通过参数、回归价值和过失的类型(电传信号)。
XML-RPC申请结构: 一份载有方法和参数信息的《吉大港山区行动计划》申请。
XML-RPC的应对结构: 一份载有收益价值或过失信息的吉大港山区对策。
我们将在今后三章中研究这三个组成部分。
XML-RPC - Data Model
XML-RPC的规格界定了6种基本数据类型和2种复合数据类型,即类型组合。
Basic Data Types in XML-RPC
Type | Value | Examples |
---|---|---|
int or i4 | 32-bit integers between - 2,147,483,648 and 2,147,483,647. |
<int>27</int> <i4>27</i4> |
double | 64-bit floating-point numbers |
<double>27.31415</double> <double>-1.1465</double> |
Boolean | true (1) or false (0) |
<boolean>1</boolean> <boolean>0</boolean> |
string | ASCII text, though many implementations support Unicode |
<string>Hello</string> <string>bonkers! @</string> |
dateTime.iso8601 | Dates in ISO8601 format: CCYYMMDDTHH:MM:SS |
<datetime.iso8601> 20021125T02:20:04 以及 /日期.iso8601> <datetime.iso8601> 20020104T17:27:30 以及 /日期.iso8601> |
base64 | Binary information encoded as Base 64, as defined in RFC 2045 |
<base64>SGVsbG8sIFdvcmxkIQ=</base64> |
这些基本类型始终载于 值。 限量(仅限载体)可附在t/i>上。 内容可参见string。 这些基本类型可合并为两种更为复杂的类型、阵列和构件。 天体代表了顺序信息,而碎块则代表了名称价值,与表层、联系阵列或特性相类似。
array 元件注明,其中包含一份“data 值清单的内容。 与其他数据类型一样,array 元件必须附在 Value元件内。 例如:arraycontains 4 strings:
<value> <array> <data> <value><string>This </string></value> <value><string>is </string></value> <value><string>an </string></value> <value><string>array.</string></value> </data> </array> </value>
下面的阵列有4个分类:
<value> <array> <data> <value><int>7</int></value> <value><int>1247</int></value> <value><int>-91</int></value> <value><int>42</int></value> </data> </array> </value>
射线还可包含不同类型的混合物,如下文所示:
<value> <array> <data> <value><boolean>1</boolean></value> <value><string>Chaotic collection, eh?</string></value> <value><int>-91</int></value> <value><double>42.14159265</double></value> </data> </array> </value>
建立多层面阵列很简单,只是增加阵列中的阵列:
<value> <array> <data> <value> <array> <data> <value><int>10</int></value> <value><int>20</int></value> <value><int>30</int></value> </data> </array> </value> <value> <array> <data> <value><int>15</int></value> <value><int>25</int></value> <value><int>35</int></value> </data> </array> </value> </data> </array> </value>
简单地看着:
<value> <struct> <member> <name>givenName</name> <value><string>Joseph</string></value> </member> <member> <name>familyName</name> <value><string>DiNardo</string></value> </member> <member> <name>age</name> <value><int>27</int></value> </member> </struct> </value>
这样,你就可以执行几乎所有由任何方案拟定语言支持的数据类型。
XML-RPC - Request Format
XML-RPC requests are a combination of XML content and HTTP headers. The XML content uses the data typing structure to pass parameters and contains additional information identifying which procedure is being called, while the HTTP headers provide a wrapper for passing the request over the Web.
Each request contains a single XML document, whose root element is a methodCall element. Each methodCall element contains a methodName element and a params element. The methodName element identifies the name of the procedure to be called, while the params element contains a pst of parameters and their values. Each params element includes a pst of param elements which in turn contain value elements.
例如,请求采用“circleArea”这一方法,该方法采用Double参数(圆顶点),XML-RPC要求:
<?xml version="1.0"?> <methodCall> <methodName>circleArea</methodName> <params> <param> <value><double>2.41</double></value> </param> </params> </methodCall>
The HTTP headers for these requests will reflect the senders and the content. The basic template looks as follows:
POST /target HTTP 1.0 User-Agent: Identifier Host: host.making.request Content-Type: text/xml Content-Length: length of request in bytes
例如,如果在/xmlrpc的XML-RPC服务器上可使用循环Area方法,则请求可考虑:
POST /xmlrpc HTTP 1.0 User-Agent: myXMLRPCCpent/1.0 Host: 192.168.124.2 Content-Type: text/xml Content-Length: 169
整项请求将考虑:
POST /xmlrpc HTTP 1.0 User-Agent: myXMLRPCCpent/1.0 Host: 192.168.124.2 Content-Type: text/xml Content-Length: 169 <?xml version="1.0"?> <methodCall> <methodName>circleArea</methodName> <params> <param> <value><double>2.41</double></value> </param> </params> </methodCall>
它是一份普通的吉大港定居地的申请,并配备了经过精心构造的有效载荷。
XML-RPC - Response Format
答复与要求大相径庭。 如果答复是成功的——程序是正确的,执行得当,结果也回来——那么,XML-RPC的答复将像一项请求那样看待,但methodCall要素被 methodResponse要素所取代,并且没有methodName。 内容:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><double>18.24668429131</double></value> </param> </params> </methodResponse>
XML-RPC的反应只能包含一个参数。
这一参数可能是一个阵容或构体,因此有可能回归多重价值。
总是要求回报反应价值。 “产品价值”——或许是真正的(1)。
Like requests, responses are packaged in HTTP and have HTTP headers. All XML-RPC responses use the 200 OK response code, even if a fault is contained in the message. Headers use a common structure similar to that of requests, and a typical set of headers might look pke:
HTTP/1.1 200 OK Date: Sat, 06 Oct 2001 23:20:04 GMT Server: Apache.1.3.12 (Unix) Connection: close Content-Type: text/xml Content-Length: 124
XML-RPC只需要1 000多吉拉特,但吉大港山区1. 兼容。
内容提要必须放在案文/xml上。
内容-内容标题具体规定了答复的长度。
完整的反应,包括头盔和应对有效载荷。
HTTP/1.1 200 OK Date: Sat, 06 Oct 2001 23:20:04 GMT Server: Apache.1.3.12 (Unix) Connection: close Content-Type: text/xml Content-Length: 124 <?xml version="1.0"?> <methodResponse> <params> <param> <value><double>18.24668429131</double></value> </param> </params> </methodResponse>
在XML-RPC服务器向XML-RPC客户提供答复后,该链接关闭。 后续行动请求必须作为单独的XML-RPC链接发出。
XML-RPC - Fault Format
XML-RPC的过失是一种反应。 如果在处理XML-RPC申请时存在问题,methodResponse要素将包含一个错误内容,而不是一个准要素。 过失因素,如第段的内容,只有一种价值表示有些错误。 过错反应可能认为:
<?xml version="1.0"?> <methodResponse> <fault> <value><string>No such method!</string></value> </fault> </methodResponse>
过失还将有错误代码。 XML-RPC根本就将错误代码标准化。 你们需要检查特定包裹的文件,看看它们如何处理过失。
过失应对办法也可考虑:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name>code</name> <value><int>26</int></value> </member> <member> <name>message</name> <value><string>No such method!</string></value> </member> </struct> </value> </fault> </methodResponse>
XML-RPC - Examples
为了展示XML-RPC,我们再造一个服务器,利用Java处理XML-RPC的信息,我们将设立一个Java客户,向该服务器打电话。
谈话的Java部分使用了Patricia XML项目,可在
将所有杰尔案卷放在适当的轨道上,让我们利用JAVA创建一个客户和一个小型XML-RPC服务器。
XML-RPC Cpent
让我们写一个XML-RPC客户,称为sum功能。 这项职能有两个参数,并收回其数额。
import java.util.*; import org.apache.xmlrpc.*; pubpc class JavaCpent { pubpc static void main (String [] args) { try { XmlRpcCpent cpent = new XmlRpcCpent("http://localhost/RPC2"); Vector params = new Vector(); params.addElement(new Integer(17)); params.addElement(new Integer(13)); Object result = server.execute("sample.sum", params); int sum = ((Integer) result).intValue(); System.out.println("The sum is: "+ sum); } catch (Exception exception) { System.err.println("JavaCpent: " + exception); } } }
让我们看看上述客户的情况。
贾瓦一揽子计划(org.apache.xmlrpc)包括XML-RPC Java客户和XML-RPC服务器,例如XmlRpcCpent。
这套措施对于Verctor阶层是必要的。
server.execute(......)> 向服务器发送了请求书。 程序金额(17,13)按当地程序要求向服务器收取。 程序要求的收益价值始终是目的。
在此,“组合”是指服务器中定义的一台手压器。
请注意,所呼吁程序的所有参数总是由一位医生收集。
XmlRpcCpent级的构造是具体说明服务器机的“网络地址”,然后是RPC2。
当地托管——当地机器
你们可以具体说明一个IP编号,而不是当地东道方,例如194.80.215.219
您可具体说明一个域名,如Xyz.dyndns.org。
你可以具体说明港口号以及域名,如xyz.dyndns.org:80。 停泊港为80个。
请注意,远距离程序要求的结果总是是一个目标,必须归入适当的类别。
当出现问题(无关联性等)时,就投下了一种例外,必须使用<一> 副渔获物/说明加以捕获。
由于上述电话,客户向服务器发出以下信息。 请注意,这项工作由server.execute(......)内部处理,你对此无所作为。
<?xml version="1.0" encoding="ISO-8859-1"?> <methodCall> <methodName>sample.sum</methodName> <params> <param> <value><int>17</int></value> </param> <param> <value><int>13</int></value> </param> </params> </methodCall>
XML-RPC Server
以下是在 Java撰写的XML-RPC服务器来源代码。 它利用了org.apache.xmlrpc.*上的建筑课程。
import org.apache.xmlrpc.*; pubpc class JavaServer { pubpc Integer sum(int x, int y) { return new Integer(x+y); } pubpc static void main (String [] args) { try { System.out.println("Attempting to start XML-RPC Server..."); WebServer server = new WebServer(80); server.addHandler("sample", new JavaServer()); server.start(); System.out.println("Started successfully."); System.out.println("Accepting requests. (Halt program to stop.)"); } catch (Exception exception) { System.err.println("JavaServer: " + exception); } } }
让我们看一下我们在上述榜样服务器中所做的工作。
一揽子计划(org.apache.xmlrpc)载有执行XML-RPC服务器的级网络Server。
称为遥远的“程序”(sum)在课堂上作为公共方法实施。
同一服务器类别的一个实例与一个用户可以使用的手稿有关。
该服务器是按港口号码(如:80)启用的。
当出现问题时,便会提出例外,并且必须使用 >pver/i>声明加以捕获。
对于上述客户,服务器向客户发出以下回复:
<?xml version="1.0" encoding="ISO-8859-1"?> <methodResponse> <params> <param> <value><int>30</int></value> </param> </params> </methodResponse>
现在,您的服务器已经就绪,因此可以迅速汇编和操作,具体如下:
C:oraxmlrpcjava>java JavaServer Attempting to start XML-RPC Server... Started successfully. Accepting requests. (Halt program to stop.)
现在测试这一功能,向该服务器发出如下呼吁:
C:oraxmlrpcjava>java JavaCpent 30
XML-RPC - Summary
在这一理论中,你学习了XML-RPC,为什么我们需要XML-RPC。 我们讨论了其数据模型以及客户和服务器之间交换的要求和答复信息格式。 我们举了一个例子,说明XML-RPC客户和服务器如何交流信息。
XML-RPC是一个非常简单的概念,能力有限。 在许多方面,这些限制最吸引人,因为它们大大减少了执行议定书和测试其互操作性的困难。
虽然XML-RPC很简单,但创造性地应用简单的工具可以创造复杂和强大的结构。 在多种不同的系统需要通信的情况下,XML-RPC可能是最适当的最低共同标准。
What s Next?
下一步是学习可持续发展信息和社会经济行动计划。
WSDL
WSDL is an XML-based language for describing Web services and how to access them.
WSDL describes a web service, along with the message format and protocol details for the Web service.
如果你想更多地了解WSDL,请上
SOAP
SOAP is a simple XML-based protocol that allows apppcations to exchange information over HTTP.
如果你想更多地了解SOAP,请通过
Advertisements