Подтвердить что ты не робот

Создание простого WebService в С++/Qt (действующего как сервер), предоставляющего данные JSON

Мне нужно создать простой веб-сервис (являющийся "сервером" ). Целью является предоставление некоторых данных, которые я читаю в приложении Qt/С++, как JSON. В основном приложение JavaScript в браузере должно считывать свои данные из приложения Qt. Обычно это сценарий с одним пользователем, поэтому пользователь запускает приложение Google Maps в своем браузере, а дополнительные данные поступают из приложения Qt.

До сих пор я нашел эти библиотеки:

Проверка SO дает мне в основном ссылки на вышеуказанные библиотеки

Итак, в основном у меня есть следующие вопросы:

  • Какую библиотеку вы бы использовали? Я хочу, чтобы он был максимально простым, а нужен пример.
  • Есть ли другой (простой!) способ предоставить данные JSON на веб-странице JavaScript, кроме WebService?

- Изменить, примечания: ---

Необходимо, чтобы приложение было неотъемлемым. Веб-сервер не может быть установлен, дополнительное время работы не может быть использовано. Пользователь просто запускает приложение. Возможно, Qt WebKit может быть подход...

- Изменить 2 -

В настоящее время проверка крошечных веб-серверов с SO "Qt HTTP Server?"

4b9b3361

Ответ 1

Как и в моих тестах, в настоящее время я использую QtWebApp: http://stefanfrings.de/qtwebapp/index-en.html Это один из ответов Edit 2 (Qt HTTP Server?)

У небольшого WebServer Stefan есть хорошо документированный код, написанный в "Qt С++" и прост в использовании, особенно если вы уже работали с сервлетами. Поскольку он может быть легко интегрирован в мой проект 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);
}

Если у кого-то есть простые примеры с другими libs, чтобы поделиться, пожалуйста, дайте мне знать.

Ответ 2

QByteArray ba = dp.toLocal8Bit();
const char *baChar = ba.data();

Вам не нужно преобразовывать массив QByteArray в char. Response.write() также можно вызвать с помощью QByteArray.

Кстати: qPrintable(dp) - это ярлык для преобразования из массива QString в char.