2016-01-30 3 views
0

Я переношу внутренний браузер из QtWebKit в QtWebEngine.QtWebEngine: загрузить URL-адрес с HTTPPost

Я хочу, чтобы функция запрашивала URL-адрес при отправке некоторых данных. С WebKit, я мог бы использовать следующее:

С класса WebView происходит от QtWebView:

void WebView::loadPostUrl(const QUrl &url, QByteArray postdata) 
{ 
    m_initialUrl = url; 
    QNetworkRequest request = QNetworkRequest(url); 
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); 
    load(request, QNetworkAccessManager::PostOperation, postdata); 
} 

Поскольку QtWebEngine делает взаимодействие с QNetworkAccessManager, как мы можем иметь одни и те же функциональные возможности с QtWebEngine?

Благодаря

+0

Возможно, вы загрузили веб-страницу, которая затем выполняет запрос POST. – MrEricSir

+0

В моем приложении QT есть значения параметров для отправки на этот URL. Итак, вы хотите, чтобы я вызывал другой URL-адрес с этими параметрами в GET, который затем будет вызывать основной URL-адрес с помощью POST? – ruddy

+0

Это один метод. Другим было бы отправить данные на страницу через WebSockets. – MrEricSir

ответ

1

Мое решение использует QWebEnginePage::runJavaScript() для сценария логин вместо имитации послеоперационный.

QString strLoginScript(
    "var formElts = document.getElementById('formSignIn').elements;" 
    "formElts['inputLoginName'].value = '%1';" 
    "formElts['inputPassword'].value = '%2';" 
    "formElts['btnSignIn'].click();") 
    .arg(strUsername) 
    .arg(strPassword); 

// execute JavaScript code on current page 
webEngineView->page()->runJavaScript(strLoginScript); 

Необязательный последний параметр (здесь не показано) является лямбда-функция, которая выполняется, когда ваша функция JavaScript выходит и получает выход последнего значения.

Документация неясна по этому вопросу, но я думаю, что функция выполняется асинхронно из основного потока - в противном случае вы просто заблокируете выполнение и ждете, а не передаете необязательный лямбда/функтор/функцию-указатель для последующего выполнения ,