Last updated at 12:01 am UTC on 17 January 2006
I've implemented a small XML-RPC Server for squeak. XML-RPC is a very tight spec for using xml and http for webservices. Although not as full blown as SOAP, it is understandable (you can learn everything about it on one evening), and it's easy to extend.
Another advantage is that, due to its simplicity, XMLRPC-clients and -servers have been implemented in various languages, look at http://www.xmlrpc.com/directory/1568/implementations.
Usage: Get the XMLRPC-Client, YAXO and Comanche, then load the DVS package XMLRPC-Server.st. Then do:
The usage of the server could be found in XMLRPCStandardValidator class and XMLRPCServerTest.
Short: Write a class MyClass that response to myMthd: aCollection (aCollection contains the parameters of the methodcall), then evaluate
How to test it?
File the changeset after the XML-RPC client in, the evaluate the following:
XMLRPCServerRequest initialize. XMLRPCStandardValidator addTests. XMLRPCHttpModule start
Then you can validate the server with the XMLRPC-Validator (address is your IP, port is 8200, the path could be anything). It passes the whole testsuite.
How to learn more?
For now, look at
XMLRPCStandardValidator class>>#xmlrpcMethodCall:. Be aware, that a methodcall should only return
any other instance of Object will be encoded as a struct (dictionary) with the instanceVariableNames as key and the value as value, nil is encoded as '<value>nil</value>'.
XMLRPC for ComancheNG:
(ComancheHttpService on: 8200 named: 'XML-RPC')
onRequestDispatch: #process: to: XMLRPCHttpModule new;
XMLRPC does not work
XMLNodeWithElements>>elementAt:ifAbsent: and exchange "key" with "name".
– Markus Fritsche
- class comments
Special thanks to Christian Langreiter for the squeak XML-RPC client, which gave me an idea how to begin and Dustin Sallings for a more up-to-date XMLRPC client.
This new version should world with Comanche5 and Stephen Pair's Kom 6.1