Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT网络回复赢得';不要从PHP脚本返回结果_Php_C++_Xml_Qt_Qnetworkaccessmanager - Fatal编程技术网

QT网络回复赢得';不要从PHP脚本返回结果

QT网络回复赢得';不要从PHP脚本返回结果,php,c++,xml,qt,qnetworkaccessmanager,Php,C++,Xml,Qt,Qnetworkaccessmanager,大家好,我有一个问题。 我正在用php脚本连接QT。一切都很好,但是有人能帮我如何从中接收php结果吗。 这是我的密码: void MainWindow::Dodaj_korisnika(QUrl url) { //reply = qnam.get(QNetworkRequest(url)); //////////////////////////////////////////////////// QUrl params; params.addQueryItem(

大家好,我有一个问题。 我正在用php脚本连接QT。一切都很好,但是有人能帮我如何从中接收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结果。我想说的是,这可能吗? 如果你有时间,请给我一些提示或举例。。
谢谢大家

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

是的,我正在触发脚本。你能给我举个例子吗..如何修改我的代码?这样我就可以创建一个类来访问数据库了?如何检查连接是否正常?然后我只需要调用触发php脚本所需的所有东西。。你能帮我和我的服务器通信吗。这是oracle数据库btw,它正在使用php。结果我得到了xml..我的意思是我应该得到它们。事先谢谢先生。好的,谢谢。但是我仍然没有在replyfinished函数中的reply变量中获取任何内容。我没有在reply变量中获取任何内容。当我打印出来时,它会显示“像空字符串一样”。我返回XML,但我应该将其作为字符串正确获取?欢迎回来:)。能否打印
回复->错误()
?这将有所帮助。这意味着:网络访问API无法接受请求,因为协议未知。您的URL应包含正确的协议,即“qt.nokia.com”将导致此错误,而“http://qt.nokia.com”不会。你也看看。