Création de WebService simple en C++ / Qt (agissant comme serveur) fournissant des données JSON

j'ai besoin de créer un service web simple (le "serveur"). Le but est de fournir quelques données que je lis dans une application Qt / C++ comme JSON données. Fondamentalement, une application JavaScript dans le navigateur doit lire ses données à partir de L'application Qt. Il s'agit généralement d'un scénario utilisateur unique, de sorte que L'utilisateur exécute une application Google Maps dans son navigateur, tandis que des données supplémentaires proviennent de l'application Qt.

Jusqu'à présent j'ai trouvé ces libs:

  1. Qxt:http://libqxt.bitbucket.org/doc/0.6/index.html mais être un internaute novice sur C++ / Qt je manque quelques exemples. Ajouté: j'ai trouvé un exemple ici
  2. gSoap:http://www.cs.fsu.edu/~engelen/soap.html a plus d'exemples et de documentation et semble aussi supporter JSON
  3. KD SOAP: http://www.kdab.com/kdab-products/kd-soap/ sans aucun exemple pour autant que je puisse dire, docu est ici
  4. Qt se caractérise, mais il s'agit plus d'agir en tant que client:http://qt-project.org/videos/watch/qt-networking-web-services

Vérification de la SORTE me donne essentiellement des liens ci-dessus pour le libs

  1. webservice avec Qt avec un exemple que je ne comprends pas vraiment.
  2. comment créer un service Web par Qt

Donc en gros j'ai l' suite des questions:

  1. quelle lib utiliseriez-vous? J'ai envie de le garder aussi simple que possible et besoin d'un exemple.
  2. Est-il une autre (facile!) façon de fournir les données JSON à la page Web JavaScript en dehors du WebService?

-- modifier, remarques: - - -

doit être Application intrinsèque. Aucun serveur web ne peut être installé, aucun temps d'exécution supplémentaire ne peut être utilisé. L'utilisateur lance juste l'application. Peut-être que le Qt WebKit pourrait être approche....

-- Edit 2 --

actuellement en train de vérifier les serveurs web minuscules comme de SO" Qt serveur HTTP?"

16
demandé sur Community 2012-07-19 13:53:30

2 réponses

Comme de mes tests, je suis actuellement en utilisant QtWebApp: http://stefanfrings.de/qtwebapp/index-en.html C'est l'une des réponses de Modifier 2 ( Qt serveur HTTP? )

Le Petit serveur Web de Stefan a du code bien documenté, est écrit en "Qt C++" et facile à utiliser, surtout si vous avez déjà travaillé avec des servlets. Puisqu'il peut être facilement intégré dans mon projet Qt, je vais me retrouver avec un serveur Web interne.

du code de démonstration de mon JSON tests, montrant que la génération du contenu JSON est essentiellement la création d'un QString.

void WebServiceController::service(HttpRequest& request, HttpResponse& response) {
// set some headers
response.setHeader("Content-Type", "application/json; charset=ISO-8859-1");
response.setCookie(HttpCookie("wsTest","CreateDummyPerson",600));

QString dp = WebServiceController::getDummyPerson();
QByteArray ba = dp.toLocal8Bit();
const char *baChar = ba.data();
response.write(ba);
}

si quelqu'un a des exemples faciles à partager avec d'autres libs, merci de me le faire savoir.

14
répondu Horst Walter 2017-05-23 12:26:34
QByteArray ba = dp.toLocal8Bit();
const char *baChar = ba.data();

Vous n'avez pas besoin de convertir l' QByteArray char tableau. Response.write() peut aussi être appelé avec un QByteArray.

Par la route: qPrintable(dp) est un raccourci pour convertir de QString char tableau.

2
répondu Stefan 2016-03-08 12:39:28