QT 网络回复不会给我返回 PHP 脚本的结果

发布于 2024-12-29 17:43:36 字数 1348 浏览 1 评论 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 这可能吗? 如果您有时间,请给我一些提示或一些例子。 谢谢大家了!

Hi all I have one problem.
I am connecting QT with php script..Everything works fine, but can somone help me how to receive php result from it.
here is my code :

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*)));
}

And I have found on forums that I need to use this function:

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

But ofc I am not getting anything into this function..Is it possible to read from QT manager variable? I am receiving xml result. And I want to put it as QDomDocument is that possible?
Please give me some hint or some example if you have some time..
Thank's all!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘴硬脾气大 2025-01-05 17:43:36

你确定 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
}

Are you sure the PHP script received something?

  • First you are creating a signal and slot each time you are posting
  • Second you create the connection after posting
  • Third verify that your query is well formed and that the php script is receiving it. If you have the script log\print incoming messages

Edit: This is How it should look like

// 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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文