我使用Qt 5.5.1并使用QWebview制作小型浏览器我想在
时打开一个网页并按下一个按钮,它将获取网站就像我用GET方法QnetworkAccessManager不使用它,因为我想从网站上有一个登录页面的数据,所以当我登录并没有POST方法PHP获取数据的URL不会改变。
例如当我登录到www.login.com登录显示在同一链接上的数据
我需要任何想法我可以解决这个问题,或者如果我可以从QWebview
打开网站获取当前数据 注意
当我登录到网站,并获取数据从它通过压上查看源代码在Firefox登录数据出现在源代码
这是我试过
从QWebView使用Qt 5.5.1获取网站的内容
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) {
ui->setupUi(this);
ui->webView->load(QUrl("https://www.login.com")); // load page that have user name and password field
QWebPage *page = ui->webView->page(); // get the current page
manager = page->networkAccessManager(); // get the access manager from this page
}
MainWindow::~MainWindow() {
delete ui;
}
// get button
void MainWindow::on_pushButton_clicked() {
reply = manager->get(QNetworkRequest(QUrl("https://www.login.com"))); // make get now after login
connect(reply, SIGNAL(readyRead()),this,SLOT(readyRead()));
connect(reply, SIGNAL(finished()),this, SLOT(finish()));
}
void MainWindow::readyRead() {
QString str = QString::fromUtf8(reply->readAll()).trimmed(); // read the data
ui->plainTextEdit->appendPlainText(str);
}
但我得到第一个pag的数据没有登录。我想在登录后获取页面内容,请告诉我应该做什么。
更新
我认为从Firefox在网页源代码中获取文本输入名称,并使用QUrlQuery由结果作出后,以它的第一页没有登录本的HTML代码的一部分,我得到了它的名字
<label class="label-off" for="dwfrm_ordersignup_orderNo">Numéro de la commande</label> <input class="textinput required" id="anyname" type="text" name="UserName" value="" maxlength="2147483647" placeholder="* UserName" data-missing-error="Saisis ton numéro de commande. " data-parse-error="Ce contenu est invalide" data-range-error="Ce contenu est trop long ou trop court" required="required" />
它与其他字段的代码相同。
代码我在Qt的使用,使后
manager = new QNetworkAccessManager(this);
QUrlQuery query;
query.addQueryItem("UserName", "AAAA");
query.addQueryItem("Password", "BBB");
reply = manager->post(QNetworkRequest(QUrl(ui->lineEdit->text().trimmed())), query.toString().toUtf8());
connect(reply,&QNetworkReply::downloadProgress,this,&MainWindow::progress);
connect(reply,SIGNAL(readyRead()),this,SLOT(readyRead()));
connect(reply, SIGNAL(finished()), this,SLOT(finish()));
我尝试后代码PHP页面我做和在这里工作的问题,这只是HTML页面
你可能要发个帖子方法到服务器,你需要分析的登录页面,看到的文本输入的名称和它当作一键'QUrlQuery',并通过这些相应的值(通常是名和密码)。有关如何使用Qt完成post方法的示例已发布[此处](http://stackoverflow.com/a/7445752/2014561)。 –
我更新什么我都试过,请看一看这个 –
请参阅我的回答这个问题。 –