HaXR - the Haskell XML-RPC library

HaXR is a library for writing XML-RPC client and server applications in Haskell.

HaXR consists of two packages: haxr and haxr-th. The latter package contains the Template Haskell code used for automatically deriving XML-RPC struct representations for Haskell records.

Christopher Milton came up with the HaXR name, thanks!

Documentation

Examples

Server

This is a simple CGI-based server with only one method that takes two integers and returns their sum.

import Network.XmlRpc.Server

add :: Int -> Int -> IO Int
add x y = return (x + y)

main = cgiXmlRpcServer [("examples.add", fun add)]

Note: the argument to fun can be a function that takes any number of arguments.

Client

This is a client that calls the method implemented by the server above and prints the result.

import Network.XmlRpc.Client

server = "http://localhost/~bjorn/cgi-bin/simple_server"

add :: String -> Int -> Int -> IO Int
add url = remote url "examples.add"

main = do
       let x = 4
	   y = 7
       z <- add server x y
       putStrLn (show x ++ " + " ++ show y ++ " = " ++ show z)

Note: the function returned by remote can be a function that takes any number of arguments.

Heterogeneous structs

Have a look at examples/Person.hs for an example of how to use heterogeneous structs. haxr-th/examples/PersonTH.hs does the same using the Network.XmlRpc.THDeriveXmlRpcType module.

XML-RPC introspection

This library supports XML-RPC introspection, both in the client and server. See examples/make-stubs.hs for an example of how to use introspection in a client.

More examples

More example are available in the examples/ folder in the darcs repository.

API reference

Use the online copy of the API documentation or build your own from the sources by using Haddock.

Report

I have written a report (ps, pdf) on the design and implementation of Haskell XML-RPC. The report was written in January 2004, and is slowly getting out of date.

Download

Hackage

You can get the latest versions of the haxr and haxr-th packages from Hackage.

Darcs repository

Use darcs to get the source from the repo at http://darcs.haskell.org/haxr/:

$ darcs get http://darcs.haskell.org/haxr/

Reporting bugs, requesting features

To report bugs, request features, submit patches, or ask for help, email bjorn@bringert.net.

Some known problems are listed in the TODO file in the source distribution. If you need any of those fixed, let me know.

License

HaXR is distributed under a BSD-style license.

Copyright 2003-2007 Björn Bringert.

Valid XHTML 1.0! Valid CSS!