首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT QNetworkReply与Php

QT QNetworkReply与Php
EN

Stack Overflow用户
提问于 2016-06-04 16:02:14
回答 1查看 209关注 0票数 0

我正在尝试连接到一个php页面。

我做什么并不重要,但QNetworkReply总是空的。

这是我的密码,希望有人有主意。

代码语言:javascript
复制
QUrl url("http://mysite.it/interface.php");
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QUrlQuery params;
//list of params 


url.setQuery(params);
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));

manager->post(request,params.toString(QUrl::FullyEncoded).toUtf8());

connect(this, SIGNAL(confirm_signal()), reciver, SLOT(recive_confirm()));

这是回复的插槽。

代码语言:javascript
复制
    void database::replyFinished(QNetworkReply *reply){
    if(reply->error())
        {
        qDebug() << "ERROR!";
        qDebug() << reply->errorString();

        }
    else {
        qDebug()<< reply->readAll().toInt();
        qDebug()<< reply->readAll().trimmed();
        QByteArray array = reply->readAll();
        QString str(array);
        reply->deleteLater();
        qDebug() << "array" <<array;
        qDebug() <<"string" <<str;

        QString str2 = QString::fromUtf8(array.data(), array.size());

        qDebug() <<str2;
        int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
        qDebug() << QVariant(statusCode).toString();
        emit confirm_signal();
    }
}

除了状态代码"200“之外,所有qDebug()都给出了"”作为答案。

代码语言:javascript
复制
<?php
json_encode("Ok");
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 11:48:36

您当前的interface.php代码没有输出任何内容,它只是计算JSON字符串(并将其发回),您必须使用echo

代码语言:javascript
复制
<?php
echo json_encode("Ok");
?>

编辑:--您的replyFinished插槽中还有另一个错误,当您调用readAll时,将返回设备中当前可用的数据。下一次调用它时,只返回新的可用数据。

因此,通过执行qDebug()<< reply->readAll().toInt();,您正在读取当前可用的数据,并且没有将其保存到任何地方,只需将其转换为int (由于数据为"Ok",而toInt()返回0),而下一个readAll()返回一个空QByteArray,因为"Ok"在上一次调用中被读取,我认为您的意思是:

代码语言:javascript
复制
else {
    QByteArray array = reply->readAll();
    qDebug()<< array.toInt();
    qDebug()<< array.trimmed();
    QString str(array);
    reply->deleteLater();
    qDebug() << "array" <<array;
    qDebug() <<"string" <<str;

    QString str2 = QString::fromUtf8(array.data(), array.size());

    qDebug() <<str2;
    int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    qDebug() << QVariant(statusCode).toString();
    emit confirm_signal();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37632308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档