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 &)));