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 に答える