c++ - Http 帖子不显示内容

标签 c++ qt

所以我试图发布到我的 localhost 以获得结果,无论是否成功,我遇到了问题。我认为它没有发送请求或者只是没有得到页面的结果。我补充说:

QT += network

还是不行

void sendPost() {

QEventLoop eventLoop;
QNetworkAccessManager mgr;

QUrlQuery postData;
postData.addQueryItem("unm", "user");
postData.addQueryItem("pwd", "81238as");

QNetworkRequest request(QUrl(QString("http://localhost/login.php")));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QNetworkReply *reply = mgr.post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
eventLoop.exec();

if (reply->error() == QNetworkReply::NoError) {

    QString data = reply->readAll();
        qDebug(data.toUtf8().constData());
        delete reply;
}
else {
    qDebug() << "Failure" <<reply->errorString();
    delete reply;
  }
}

感谢您的宝贵时间。

最佳答案

你运行 eventLoop 所以它会阻止你所有的应用程序,当你的经理完成时你应该退出 eventLoop 。下一个代码有效,但老实说,我总是用信号和槽来做这个,所以我不知道 QEventLoop 的使用是否是正确的方法。

试试这个:

#include <QObject>
//...
QEventLoop eventLoop;
QNetworkAccessManager mgr;

QUrlQuery postData;
postData.addQueryItem("unm", "user");
postData.addQueryItem("pwd", "81238as");

QNetworkRequest request(QUrl(QString("http://localhost/login.php")));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QNetworkReply *reply = mgr.post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
QObject::connect(&mgr,SIGNAL(finished(QNetworkReply*)),&eventLoop,SLOT(quit()));
eventLoop.exec();

if (reply->error() == QNetworkReply::NoError) {

    QString data = reply->readAll();
        qDebug(data.toUtf8().constData());
        delete reply;
}
else {
    qDebug() << "Failure" <<reply->errorString();
    delete reply;
  }

关于c++ - Http 帖子不显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561352/

相关文章:

c++ - 2D MemoryView 到 C 指针错误(1D 有效,但 2D 无效)

c++ - 查找字符串是否包含字符串并处理附加数字

c++ - 如何将新的 lambda 表达式分配给函数对象?

qt - 在Qt4中,如何检查paintEvent是否由resize触发?

Linux startx qt 边框

c++ - 在 UML 图中编码自关联?

C++ 读取 UTF-8 文件 OK,转换为 UTF-16 OK,写回文件 NOT OK

c++ - QT Creator C++ 不为一项生成 ui_.h 文件

c++ - Qml:从文件加载组件时将参数作为 URL 的一部分传递

c++ - 这个元素在 c++ Qt 中被称为什么?