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