Http帖子未显示内容

Http Post Not Showing Content

本文关键字:显示 Http      更新时间:2023-10-16

所以我试图发布到我的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;
  }