5

函数 CheckSite() 使用类似http://example.com的 url 调用,它初始化 QNetworkAccessManager 对象和 connect() 插槽和信号。

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));
}
4

2 回答 2

1

没有什么。我将它包装起来,使其功能齐全并且工作正常:

// 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”。也许您正在检查的网站真的没有返回?也许它需要身份验证或产生ssl 错误

于 2010-05-05T21:09:53.157 回答
0

你有什么代码?你在某处旋转事件循环吗?例如 qapp.exec() ?

于 2010-05-06T07:34:07.060 回答