SourceForge Logo
A standalone C API for XML-RPC

About xmlrpc-epi

About xmlrpc-epi-php

  XMLRPC C API Reference
  Complete C API Reference
  Examples / Tutorial
  XMLRPC Protocol Spec
  RFC: system.describeMethods
  RFC: Standard Fault Codes

  Project Page
  Mailing List
  Bug Reports
  Feature Requests
  CVS Access

XML-RPC Community
  xmlrpc mailing List
  online services

Related Links
  xmlrpc mailing List
  original expat
  new expat project

In a Nutshell

xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML. It does *not* include a transport layer, such as HTTP. The API is primarily based upon proprietary code written for internal usage at, and was later modified to incorporate concepts from the xmlrpc protocol. It passed the xmlrpc validation test suite in December 2000. (Try It Now.)

A php extension which uses this library is also available and is included with php as of php 4.1.0. See xmlrpc-epi-php.

As of Sept. 27, 2001, experimental support for SOAP v 1.1 has been added to the library. This support is implemented transparently to the application such that a single API can be used for manipulation of values, yet both SOAP and XML-RPC can be read or written.

Various iterations of this code have been/are running at and are sufficiently fast for the high traffic volume this site encounters, with several xmlrpc type requests generated for each user http request. No specific speed claims are made. Your mileage may vary.

Usage Paradigm

The user of this library will typically be implementing either an XMLRPC server, an XMLRPC client, or both. The client will use the library to build an in-memory representation of a request, and then serialize (encode) that request into XML. The client will then send the XML to the server via external mechanism. (XMLRPC-EPI does *not* include a transport layer, not even HTTP.) The server will de-serialize the XML back into an binary representation, call the appropriate registered method -- thereby generating a response. The response will be serialized into XML and sent back to the client. The client will de-serialize it into memory, and can iterate through the results via API.

Both the request and the response may consist of arbitrarily long, arbitrarily nested values. The values may be one of several types, as defined by XMLRPC_VALUE_TYPE.


You will find xmlrpc-epi included with popular Linux distros such as Debian, and it can be installed with a simple "apt-get install libxmlrpc-epi". A visual studio project file is also included for windows users and this will compile with the free versions of Visual Studio available from Microsoft.