Qt QDesktopServices:: openUrl-запуск браузера со значениями post
Я пытаюсь написать простое приложение, которое запустит браузер и отправит его в URL на основе ввода пользователя.
QDesktopServices::openUrl(QUrl(url));
Тем не менее, я хотел бы передать переменные вместе с тем, что они передают с помощью POST.
Для GET Все, что мне нужно сделать, это просто вставить значения в строку URL, но как я буду добавлять переменные POST?.
Спасибо.
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