2010-05-05 16 views
5

फ़ंक्शन चेकसाइट() को http://example.com जैसे यूआरएल के साथ बुलाया जाता है, यह एक QNetworkAccessManager ऑब्जेक्ट प्रारंभ करता है और स्लॉट्स और सिग्नल कनेक्ट करता है।क्यूटी QNetworkAccessManager संकेतों को उत्सर्जित नहीं करता

मँजर-> प्राप्त करें() कॉल काम लगता है (यह http यातायात उत्पन्न करता है) लेकिन अनुरोध अंत में स्लॉट उत्तर को समाप्त नहीं किया जाता है।

इस कोड के साथ क्या गलत है?

#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)); 
} 
+2

क्या आपको समाधान मिला? मुझे एक ही समस्या है। –

+0

नहीं, मैं प्रोजेक्ट – Emilio

उत्तर

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" 

यह उत्पादन "हो गया" के रूप में उम्मीद। हो सकता है कि जिस साइट पर आप वास्तव में जांच कर रहे हैं वह वापस नहीं आ रहा है? शायद इसे authentication की आवश्यकता है या ssl errors का उत्पादन कर रहा है?

+0

पर काम करना बंद कर दूं? क्या मुझे अपनी मुख्य() स्रोत फ़ाइल में moc फ़ाइल शामिल करनी चाहिए? – Emilio

+0

'#include" client.moc "केवल तभी जरूरी है जब आपके पास हेडर फ़ाइल में आपकी कक्षा परिभाषित न हो (और आप अपने निर्माण उपकरण के रूप में 'qmake' का उपयोग कर रहे हों)। चूंकि मेरे पास क्लाइंट.cpp में सबकुछ था, इसलिए मुझे इसकी आवश्यकता थी ताकि सबकुछ उठाया जा सके और सही तरीके से लिंक किया जा सके। –

+0

जो मेरे लिए काम किया। – Terrance

0

आपके पास इसके आसपास क्या कोड है? क्या आप कहीं इवेंट लूप स्पिन करते हैं? जैसे qapp.exec()?

+0

असल में नहीं। आज रात मैं अपने कोड में QCoreAplication और app.exec() सहित कोशिश करता हूं (एक कंसोल एप्लिकेशन है)। – Emilio

+0

मैंने QCoreAplication ऐप (argc, argv) जोड़ा है;/* वस्तुओं और विधि कॉल */वापसी app.exec(); शीर्ष मुख्य() फ़ंक्शन में, लेकिन यह कुछ भी ठीक नहीं करता है। – Emilio

संबंधित मुद्दे