0

大家好,我有一个问题。我正在将 QT 与 php 脚本连接起来。一切正常,但是有人可以帮助我如何从它接收 php 结果。这是我的代码:

void MainWindow::Dodaj_korisnika(QUrl url)
{
    //reply = qnam.get(QNetworkRequest(url));
    ////////////////////////////////////////////////////
    QUrl params;
    params.addQueryItem("action","Dodaj_korisnika");
    params.addQueryItem("ime",ui->lineEdit);
    params.addQueryItem("prezime",ui->lineEdit_2);
    params.addQueryItem("broj",ui->lineEdit_3);
    params.addQueryItem("adresa",ui->lineEdit_4);

        QByteArray data;
        data.append(params.toString());
        data.remove(0,1);

        QNetworkRequest request;
        request.setUrl(url);
        request.setHeader(QNetworkRequest::ContentTypeHeader,
        QVariant("application/x-www-form-urlencoded"));
        QNetworkAccessManager *manager = new QNetworkAccessManager(this);
        QNetworkReply *reply = manager->post(request, data);
        connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}

我在论坛上发现我需要使用这个功能:

void MainWindow::replyFinished(QNetworkReply *reply)
{
    QString data = reply->readAll().trimmed();
    // document.setContent(reply);
}

但是ofc我没有在这个函数中得到任何东西..是否可以从QT管理器变量中读取?我正在接收 xml 结果。我想把它作为 QDomDocument 可能吗?如果您有时间,请给我一些提示或示例。谢谢!

4

1 回答 1

1

你确定 PHP 脚本收到了什么吗?

  • 首先,您每次发布时都会创建一个信号和插槽
  • 其次,您在发布后创建连接
  • 第三验证您的查询格式正确并且 php 脚本正在接收它。如果您有脚本日志\打印传入消息

编辑:这就是它的样子

// early in the code, like in the constructor 
void MainWindow::init(){
  this->manager = new QNetworkAccessManager(this);
  connect(this->manager, SIGNAL(finished(QNetworkReply*)), 
          this, SLOT(replyFinished(QNetworkReply*)));
}

void MainWindow::Dodaj_korisnika(QUrl url){

    QUrl params;
    params.addQueryItem("action","Dodaj_korisnika");
    params.addQueryItem("ime",ui->lineEdit);
    params.addQueryItem("prezime",ui->lineEdit_2);
    params.addQueryItem("broj",ui->lineEdit_3);
    params.addQueryItem("adresa",ui->lineEdit_4);

    QByteArray data;
    data.append(params.toString());
    data.remove(0,1);

    QNetworkRequest request;
    request.setUrl(url);
    request.setHeader(QNetworkRequest::ContentTypeHeader,
    QVariant("application/x-www-form-urlencoded"));

    //Here you don't need to get the reply, it will be the same given to 
    //MainWindow::replyFinished
    this->manager->post(request, data);

}

void MainWindow::replyFinished(QNetworkReply *reply){
    //Use the reply as you wish
}
于 2012-01-30T18:13:54.617 回答