Tworzenie prostych Webserwisów w C++ / Qt (działających jako serwer) dostarczających dane JSON

Muszę utworzyć prosty serwis internetowy (będący "serwerem"). Celem jest dostarczenie niektórych danych, które odczytuję w aplikacji Qt / C++ jako JSON data. Zasadniczo aplikacja JavaScript w przeglądarce odczytuje swoje dane z aplikacji Qt. Zazwyczaj jest to scenariusz pojedynczego użytkownika, więc użytkownik uruchamia aplikację Google Maps w swojej przeglądarce, podczas gdy dodatkowe dane pochodzą z aplikacji Qt.

Do tej pory znalazłem te libs:

  1. Qxt: http://libqxt.bitbucket.org/doc/0.6/index.html ale jako początkujący w C++ / Qt brakuje mi kilku przykładów. Dodano: znalazłem jeden przykład tutaj
  2. gSoap: http://www.cs.fsu.edu / ~engelen/soap.html ma więcej przykładów i dokumentacji, a także wydaje się wspierać JSON
  3. KD SOAP: http://www.kdab.com/kdab-products/kd-soap/ bez przykładu, o ile mogę powiedzieć, docu jest tutaj
  4. Qt sam w sobie, ale chodzi raczej o działanie jako klient: http://qt-project.org/videos/watch/qt-networking-web-services

Sprawdzanie więc daje mi w zasadzie linki do powyższych libs

  1. webservice with Qt z przykładem, którego naprawdę nie rozumiem.
  2. Jak utworzyć webservice przez Qt

Więc w zasadzie mam następujące pytania :

  1. której lib byś użył? Chcę, aby było to tak proste, jak to tylko możliwe i potrzebowałbym przykład .
  2. czy jest inny (easy!) sposób dostarczenia danych JSON do strony JavaScript poza WebService?

-- Edit, Uwagi: - - -

Musi być aplikacją wewnętrzną. Nie można zainstalować serwera www, nie można wykorzystać dodatkowego czasu pracy. Użytkownik po prostu uruchamia aplikację. Może Qt WebKit może być podejściem....

-- Edit 2 --

Aktualnie sprawdzamy małe Serwery WWW od tak " Qt HTTP Server? "

Author: Community, 2012-07-19

2 answers

W moich testach obecnie używam QtWebApp: http://stefanfrings.de/qtwebapp/index-en.html to jest jedna z odpowiedzi na Edit 2 (Qt HTTP Server? )

Mały WebServer Stefana ma dobrze udokumentowany kod, jest napisany w "Qt C++" i łatwy w użyciu, zwłaszcza jeśli pracowałeś już z serwletami. Ponieważ można go łatwo zintegrować z moim projektem Qt, skończę z wewnętrznym serwerem WWW.

Jakiś kod demo z moich testów JSON, pokazujący, że generowanie zawartość JSON zasadniczo tworzy 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);
}

Jeśli ktoś ma łatwe przykłady z innymi libami do udostępnienia, proszę dać mi znać.

 14
Author: Horst Walter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:34
QByteArray ba = dp.toLocal8Bit();
const char *baChar = ba.data();

Nie musisz konwertować QByteArray do tablicy znaków. Response.write() może być również wywołana przez QByteArray.

Przy okazji: qPrintable(dp) jest skrótem do konwersji z QString do tablicy znaków.

 2
Author: Stefan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 12:39:28