Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/wiedi/libmaia

XML-RPC lib for Qt
https://github.com/wiedi/libmaia

Last synced: 3 months ago
JSON representation

XML-RPC lib for Qt

Lists

README

        

# libmaia

libmaia is a easy-to-use XML-RPC library for Qt!

# compiling libmaia

qmake
make

# Qt Datatypes

Allowed types for Argument and Return Values:

C++/Qt-Types XMLRPC-Types
----------------------------------------
* int
* qint64 (non standard)
* bool
* double
* QString
* QDateTime
* ByteArray
* QVariant (non standard)
* QVariantMap
* QVariantList

# 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"

3. create object

server:

MaiaXmlRpcServer *server = new MaiaXmlRpcServer(8080, this);

client:

MaiaXmlRpcClient *client = new MaiaXmlRpcClient(QUrl("http://localhost:8080/RPC2"), this);

4. 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");

5. 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

example code:

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 << "second argument";

rpcClient->call("example.methodName", args,
this, SLOT(myResponseMethod(QVariant&)),
this, SLOT(myFaultResponse(int, const QString &)));