about libmaia ------------- libmaia is a easy-to-use XML-RCP library for Qt4! compiling libmaia ----------------- # qmake # make Qt Datatypes ------------ Allowed types for Argument and Return Values: C++/Qt-Types XMLRPC-Types ---------------------------------------- * int <int></int> * bool <bool></bool> * double <double></double> * QString <string></string> * QDateTime <datetime.iso8601></datetime.iso8601> * ByteArray <base64></base64> * QVariantMap <struct></struct> * QVariantList <array></array> using libmaia ------------- 1) qmake: your Project file (.pro) should contain ==================================== INCLUDEPATH += /path/to/libmaia LIBS += /path/to/libmaia/libmaia.a QT += xml network ==================================== 2) in your header file include #include "maiaXmlRpcClient.h" AND/OR #include "maiaXmlRpcServer.h" 4) create object server: MaiaXmlRpcServer *server = new MaiaXmlRpcServer(8080, this); client: MaiaXmlRpcClient *client = new MaiaXmlRpcClient(QUrl("http://localhost:8080/RPC2"), this); 5) register a method your method has to be a Qt Slot. // example method: QString MyClass::myMethod(int param1, QString param2) { if(param1 > 5) return param2; else return "not bigger than 5"; } // register it: // "example.methodName" <- used to identify the method over xml-rpc // this <- pointer to the class which contains the method you would export // "myMethod" the name of the method server->addMethod("example.methodName", this, "myMethod"); 6) call a method when calling a method you need three things: 1) a Slot for the MethodResponse 2) a Slot for the FaultResponse 3) a QVariantList containig the arguments for the RPC-Method void MyClientClass::myResponseMethod(QVariant &arg) { // do something with the arg } void MyClientClass::myFaultResponse(int error, const QString &message) { qDebug() << "An Error occoured, Code: " << error << " Message: " << message; } QVariantList args; args << 5; args << "this is a string, no, not what you think :>"; rpcClient->call("example.methodName", args, this, SLOT(myResponseMethod(QVariant&)), this, SLOT(myFaultResponse(int, const QString &)));