17

簡単なWebサービス(「サーバー」)を作成する必要があります。目標は、Qt /C++アプリケーションで読み取ったデータをJSONデータとして提供することです。基本的に、ブラウザのJavaScriptアプリケーションは、Qtアプリからデータを読み取る必要があります。これは通常、シングルユーザーシナリオであるため、ユーザーはブラウザでGoogleマップアプリケーションを実行し、追加のデータはQtアプリケーションから取得します。

これまでのところ、私はこれらのライブラリを見つけました:

  1. Qxt:http ://libqxt.bitbucket.org/doc/0.6/index.htmlですが、C ++/Qtの初心者なのでいくつかの例を見逃しています。追加:ここで1つの例を見つけました
  2. gSoap:http ://www.cs.fsu.edu/~engelen/soap.htmlには、より多くの例とドキュメントがあり、JSONもサポートしているようです
  3. KD SOAP:http : //www.kdab.com/kdab-products/kd-soap/私が知る限り、例はありません。docuはここにあります
  4. Qtはそれ自体を備えていますが、それはクライアントとして機能することに関するものです:http: //qt-project.org/videos/watch/qt-networking-web-services

SOをチェックすると、基本的に上記のライブラリへのリンクが表示されます

  1. Qtを使用したWebサービスと、実際には取得できない例を示します。
  2. QtでWebサービスを作成する方法

だから基本的に私は次の質問があります:

  1. どのlibを使用しますか?できるだけシンプルにしたいと思います。例が必要です
  2. WebService以外にJSONデータをJavaScriptWebページに提供する別の(簡単な)方法はありますか?

-編集、備考:---

アプリケーション固有である必要があります。Webサーバーをインストールすることはできず、余分な実行時間を使用することもできません。ユーザーはアプリを実行するだけです。たぶん、QtWebKitがアプローチになるかもしれません。

-編集2-

現在、SO " Qt HTTP Server? "の時点で小さなWebサーバーをチェックしています。

4

2 に答える 2

16

私のテストの時点で、現在QtWebAppを使用しています。http://stefanfrings.de/qtwebapp/index-en.htmlこれはEdit 2(Qt HTTP Server?)の回答の1つです。

Stefanの小さなWebサーバーには、十分に文書化されたコードがあり、「Qt C ++」で記述されており、特にサーブレットをすでに使用している場合は簡単に使用できます。Qtプロジェクトに簡単に統合できるので、最終的には内部Webサーバーになります。

私のJSONテストからのいくつかのデモコードは、JSONコンテンツの生成が基本的にを作成していることを示しています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);
}

誰かが他のライブラリと共有する簡単な例を持っている場合は、私に知らせてください。

于 2012-07-21T16:33:53.027 に答える
1
QByteArray ba = dp.toLocal8Bit();
const char *baChar = ba.data();

QByteArrayをchar配列に変換する必要はありません。Response.write()で呼び出すこともできますQByteArray

ちなみに:はchar配列qPrintable(dp)に変換するためのショートカットです。QString

于 2015-03-15T17:37:50.543 に答える