17

我需要创建一个简单的 Web 服务(作为“服务器”)。目标是提供一些我在 Qt / C++ 应用程序中读取的数据作为JSON数据。基本上,浏览器中的 JavaScript 应用程序应从 Qt 应用程序中读取其数据。它通常是单用户场景,因此用户在她的浏览器中运行 Google Maps 应用程序,而其他数据来自 Qt 应用程序。

到目前为止,我已经找到了这些库:

  1. Qxt:http ://libqxt.bitbucket.org/doc/0.6/index.html但作为 C++/Qt 的新手,我错过了一些例子。补充:我在这里找到了一个例子
  2. gSoap:http ://www.cs.fsu.edu/~engelen/soap.html有更多示例和文档,而且似乎也支持 JSON
  3. KD SOAP:http : //www.kdab.com/kdab-products/kd-soap/ 据我所知没有示例,文档在这里
  4. Qt 本身具有特色,但更多的是充当客户端:http: //qt-project.org/videos/watch/qt-networking-web-services

检查 SO 基本上给了我到上述库的链接

  1. 带有 Qt 的 webservice示例,我并没有真正得到。
  2. 如何使用 Qt 创建 Web 服务

所以基本上我确实有以下问题

  1. 你会使用哪个库?我想让它尽可能简单,并且需要一个例子
  2. 除了 WebService 之外,还有另一种(简单!)方法可以将 JSON 数据提供给 JavaScript 网页吗?

-- 编辑,备注: ---

需要是应用程序固有的。不能安装 Web 服务器,也不能使用额外的运行时间。用户只需运行应用程序。也许 Qt WebKit 可能是一种方法......

-- 编辑 2 --

目前正在检查 SO“ Qt HTTP Server? ”的微型 Web 服务器?

4

2 回答 2

16

在我的测试中,目前我正在使用 QtWebApp:http ://stefanfrings.de/qtwebapp/index-en.html这是编辑 2 的答案之一(Qt HTTP Server?

Stefan 的小型 WebServer 有一些记录良好的代码,用“Qt C++”编写并且易于使用,特别是如果您已经使用过 servlet。因为它可以很容易地集成到我的 Qt 项目中,所以我最终会使用一个内部 WebServer。

我的 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()也可以用 a 调用QByteArray

顺便说一句:是从转换为 char 数组qPrintable(dp)的快捷方式。QString

于 2015-03-15T17:37:50.543 回答