Perl Tutorials - Herong's Tutorial Examples - v6.02, by Herong Yang
Defining a Remote Method Call in XML
This section describes how a remote method call can be defined in XML format. The root element name is 'methodCall'.
The first item of the XML-RPC specification is about how to define a remote method call in XML.
XML-RPC defines a method call as an XML element called "methodCall". I have tried to find a copy of the official XML Schema Definition (XSD) of "methodCall". But I had no success. So I wrote one myself. It is definitely not 100% accurate. But it does show you how the "methodCall" XML structure should be.
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- xmlRpcMethodCall.xsd Copyright (c) HerongYang.com. All Rights Reserved. --> <xsd:element name="methodCall" type="methodCallType"/> <xsd:complexType name="methodCallType"> <xsd:sequence> <xsd:element name="methodName" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="params" type="paramsType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="paramsType"> <xsd:sequence> <xsd:element name="param" type="paramType" minOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="paramType"> <xsd:sequence> <xsd:element name="value" type="valueType" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="valueType"> <xsd:choice> <xsd:element name="int" type="xsd:int" /> <xsd:element name="boolean" type="xsd:boolean" /> <xsd:element name="string" type="xsd:string" /> <xsd:element name="double" type="xsd:double" /> <xsd:element name="dateTime.iso8601" type="xsd:string" /> <xsd:element name="base64" type="xsd:xsd:base64Binary" /> <xsd:element name="struct" type="structType" /> <xsd:element name="array" type="arrayType" /> </xsd:choice> </xsd:complexType> <xsd:complexType name="structType"> <xsd:sequence> <xsd:element name="member" type="memberType" minOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="memberType"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="valueType" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="arrayType"> <xsd:sequence> <xsd:element name="data" type="dataType" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="dataType"> <xsd:sequence> <xsd:element name="value" type="valueType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
From this XML schema, we can see that:
The following is an example of "methodCall":
<methodCall> <methodName>somePackage.someSort</methodName> <params> <param><value><int>3</int></value></param> <param><value><string>Descending</string></value></param> <param><value><struct> <member><name>Yang</name><value><int>9647</int></value></member> <member><name>Bush</name><value><int>3014</int></value></member> <member><name>Gate</name><value><int>6618</int></value></member> </struct></value></param> </params> </methodCall>
Table of Contents
Data Types: Values and Variables
Expressions, Operations and Simple Statements
Name Spaces and Perl Module Files
Hard References - Addresses of Memory Objects
Objects (or References) and Classes (or Packages)
Typeglob and Importing Identifiers from Other Packages
String Built-in Functions and Performance
File Handles and Data Input/Output
Open Directories and Read File Names
File System Functions and Operations
Socket Communication Over the Internet
XML::Simple Module - XML Parser and Generator
SOAP::Lite - SOAP Server-Client Communication Module
Perl Programs as IIS Server CGI Scripts
CGI (Common Gateway Interface)
►XML-RPC - Remote Procedure Call with XML and HTTP
►Defining a Remote Method Call in XML
Sending a Remote Method Call as a HTTP Request
Defining Returning Values of a Remote Method Call
Receiving Returning Values as a HTTP Response
RPC::XML - Perl Implementation of XML-RPC
Integrating Perl with Apache Web Server
CGI.pm Module for Building Web Pages
LWP::UserAgent and Web Site Testing
Converting Perl Script to Executable Binary