Qt QDesktopServices:: openUrl-запуск браузера со значениями post



Я пытаюсь написать простое приложение, которое запустит браузер и отправит его в URL на основе ввода пользователя.



QDesktopServices::openUrl(QUrl(url));


Тем не менее, я хотел бы передать переменные вместе с тем, что они передают с помощью POST.
Для GET Все, что мне нужно сделать, это просто вставить значения в строку URL, но как я буду добавлять переменные POST?.



Спасибо.

764   2  

2 ответов:

Из официальной документации :

Bool QDesktopServices:: openUrl(const QUrl & url) [static]

Открывает указанный url-адрес в соответствующем веб-браузере для среды рабочего стола пользователя и возвращает true в случае успеха; в противном случае возвращает false.

Если URL-адрес является ссылкой на локальный файл (т. е. схема URL-адреса - "файл"), то он будет открыт с помощью подходящего приложения вместо веб-браузера.

Короткий ответ заключается в том, что это он не должен был быть сетевым менеджером. Для этой цели уже можно было бы использовать QNetworkAccessManager. Это был просто удобный способ добавить поддержку для открытия URL-адреса, так как в противном случае это потребовало бы совсем немного работы. Не было никаких дальнейших планов к нему тиражироваться более близко.

Таким образом, я бы предложил использовать что-то вроде этого для достижения работы с методами post, учитывая Ваш url:

QUrlQuery urlQuery;
urlQuery.addQueryItem("param1", "value1");
urlQuery.addQueryItem("param2", "value2");
QUrl url = QUrl("http://foo.com");
QNetworkRequest networkRequest(url);
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
networkManager->post(networkRequest, urlQuery.toString(QUrl::FullyEncoded).toUtf8());

QDesktopServices не был разработан для этого, я бы предложил сделать ваш HTTP-пост с помощью QNetworkAccessManager::post вместо этого.

Затем, возможно, вы можете взять некоторую информацию из ответа HTTP, чтобы открыть браузер рабочего стола, если это необходимо.

Comments

    Ничего не найдено.