Qt网络传输之QNetworkAccessManager的使用

把 QNetworkAccessManager 的 get/post 请求封装成函数,此方法可以避免使用槽函数响应网络请求;

#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QEventLoop>
#include <QTextCodec>

    static QString UrlRequestGet( const QString url )
    {
        QNetworkAccessManager qnam;
        const QUrl aurl( url );
        QNetworkRequest qnr( aurl );
        qnr.setRawHeader("Content-Type","application/json");
        QNetworkReply *reply = qnam.get( qnr );

        QEventLoop eventloop;
        connect( reply,SIGNAL(finished()),&eventloop,SLOT(quit()));
        eventloop.exec( QEventLoop::ExcludeUserInputEvents);

        QTextCodec *codec = QTextCodec::codecForName("utf8");
        QString replyData = codec->toUnicode( reply->readAll() );

        reply->deleteLater();
        reply = 0;

        return replyData;
    }

    static QString UrlRequestPost( const QString url,const QString data )
    {
        QNetworkAccessManager qnam;
        const QUrl aurl( url );
        QNetworkRequest qnr( aurl );
        qnr.setRawHeader("Content-Type","application/json;charset=GBK");
        QNetworkReply *reply = qnam.post( qnr, data.toLocal8Bit() );

        QEventLoop eventloop;
        connect( reply,SIGNAL(finished()),&eventloop,SLOT(quit()));
        eventloop.exec( QEventLoop::ExcludeUserInputEvents);

        QTextCodec *codec = QTextCodec::codecForName("utf8");
        QString replyData = codec->toUnicode( reply->readAll() );

        reply->deleteLater();
        reply = 0;

        return replyData;
    }

生成日志文件

#include <QFile>
#include <QByteArray>
#include <QDateTime>
    static void log( const QString &logFile, const QByteArray &data )
    {
        QFile file( logFile );
        if( file.open(QIODevice::WriteOnly | QIODevice::Append) )
        {
            QByteArray ba = QDateTime::currentDateTime().toString( "yyyy-MM-dd hh:mm:ss" ).toLocal8Bit();
            ba += "     " + data + "\n";
            file.write( ba );
            file.close();
        }
    }


参考文档:

Qt--Http请求封装(Get Post)

猜你喜欢

转载自blog.csdn.net/graceland525/article/details/79581480