且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

我如何获取网页的内容

更新时间:2023-02-23 21:54:05

你看过QNetworkAccessManager?这是一个说明用法的粗略和现成的示例:

Have you looked at QNetworkAccessManager? Here's a rough and ready sample illustrating usage:

class MyClass : public QObject
{
Q_OBJECT

public:
    MyClass();
    void fetch(); 

public slots:
    void replyFinished(QNetworkReply*);

private:
    QNetworkAccessManager* m_manager;
};


MyClass::MyClass()
{
    m_manager = new QNetworkAccessManager(this);

    connect(m_manager, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(replyFinished(QNetworkReply*)));

}

void MyClass::fetch()
{
    m_manager->get(QNetworkRequest(QUrl("http://***.com")));
}

void MyClass::replyFinished(QNetworkReply* pReply)
{

    QByteArray data=pReply->readAll();
    QString str(data);

    //process str any way you like!

}

在您的处理程序中 finished 向您发出信号将传递一个 QNetworkReply 对象,您可以从中读取响应它继承自 QIODevice.一个简单的方法是调用 readAll 来获取QByteArray.您可以从该 QByteArray 构造一个 QString 并执行任何操作你想用它来做.

In your in your handler for the finished signal you will be passed a QNetworkReply object, which you can read the response from as it inherits from QIODevice. A simple way to do this is just call readAll to get a QByteArray. You can construct a QString from that QByteArray and do whatever you want to do with it.