0

こんにちはすべて私は1つの問題があります。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);
}

しかし、私はこの関数に何も入れていません..QTマネージャー変数から読み取ることは可能ですか?xmlの結果を受け取っています。そして、QDomDocumentはそれが可能であるため、私はそれを置きたいですか?時間があれば、ヒントや例を教えてください。ありがとうございました。

4

1 に答える 1

1

PHPスクリプトが何かを受け取ってもよろしいですか?

  • まず、投稿するたびにシグナルとスロットを作成します
  • 次に、投稿後に接続を作成します
  • 3番目に、クエリが整形式であり、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 に答える