函数CheckSite()是通过类似http://example.com的url调用的,它初始化一个QNetworkAccessManager对象并连接()插槽和信号。
manger->get()调用似乎是有效的(它生成http流量),但是在请求端不调用槽replyFinished()。
这段代码有什么问题?
#include <QtCore>
#include <QtNetwork>
class ClientHandler : public QObject
{
Q_OBJECT
QNetworkAccessManager *manager;
private slots:
void replyFinished(QNetworkReply *);
public:
void CheckSite(QString url);
};
void ClientHandler::replyFinished(QNetworkReply *reply) { qDebug() << "DONE"; }
void ClientHandler::CheckSite(QString url) {
QUrl qrl(url);
manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(qrl));
}发布于 2010-05-06 05:09:53
没什么。我对它进行了包装,使其功能齐全,运行良好:
// placed in client.cpp
#include <QtDebug>
#include <QCoreApplication>
/* YOUR CODE */
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
ClientHandler handler;
handler.CheckSite("www.google.com");
return app.exec();
}
#include "client.moc"它会按照预期输出"DONE“。也许你正在检查的网站真的没有返回?也许它需要authentication或正在生产ssl errors
发布于 2010-05-06 15:34:07
你有什么代码来解决这个问题?你会在某个地方旋转一个事件循环吗?例如qapp.exec()?
https://stackoverflow.com/questions/2776640
复制相似问题