From 3d65bdc913a89a69b795af1646446e5e5ee9dea0 Mon Sep 17 00:00:00 2001 From: zhuzichu Date: Thu, 7 Dec 2023 18:13:58 +0800 Subject: [PATCH] update --- example/qml-Qt6/App.qml | 1 + example/qml/App.qml | 1 + example/src/helper/Log.cpp | 2 +- example/src/main.cpp | 1 - src/FluApp.cpp | 2 +- src/FluNetwork.cpp | 60 ++++++++++++++++++++++++++++++++++---- src/FluNetwork.h | 6 +++- 7 files changed, 64 insertions(+), 9 deletions(-) diff --git a/example/qml-Qt6/App.qml b/example/qml-Qt6/App.qml index 88975a2e..1a88c8e1 100644 --- a/example/qml-Qt6/App.qml +++ b/example/qml-Qt6/App.qml @@ -25,6 +25,7 @@ Item { } Component.onCompleted: { + FluNetwork.openLog = true FluNetwork.setInterceptor(function(param){ param.addHeader("Token","000000000000000000000") }) diff --git a/example/qml/App.qml b/example/qml/App.qml index 7b50e37b..8b57ea9d 100644 --- a/example/qml/App.qml +++ b/example/qml/App.qml @@ -25,6 +25,7 @@ Item { } Component.onCompleted: { + FluNetwork.openLog = true FluNetwork.setInterceptor(function(param){ param.addHeader("Token","000000000000000000000") }) diff --git a/example/src/helper/Log.cpp b/example/src/helper/Log.cpp index c53236e3..4f431b82 100644 --- a/example/src/helper/Log.cpp +++ b/example/src/helper/Log.cpp @@ -126,7 +126,7 @@ void Log::setup(const QString &app) } once = true; g_app = app; - const QString logFileName = QString("%1-%2.log").arg(g_app,QString::number(QDateTime::currentMSecsSinceEpoch())); + const QString logFileName = QString("%1_%2.log").arg(g_app,QDateTime::currentDateTime().toString("yyyyMMdd")); const QString logDirPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/log"; const QDir logDir(logDirPath); if(!logDir.exists()){ diff --git a/example/src/main.cpp b/example/src/main.cpp index d3b82b04..15f9e3cb 100644 --- a/example/src/main.cpp +++ b/example/src/main.cpp @@ -28,7 +28,6 @@ int main(int argc, char *argv[]) QGuiApplication::setOrganizationName("ZhuZiChu"); QGuiApplication::setOrganizationDomain("https://zhuzichu520.github.io"); QGuiApplication::setApplicationName("FluentUI"); - QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy); SettingsHelper::getInstance()->init(argv); Log::setup("example"); #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) diff --git a/src/FluApp.cpp b/src/FluApp.cpp index 25ab69cc..409ca27d 100644 --- a/src/FluApp.cpp +++ b/src/FluApp.cpp @@ -14,9 +14,9 @@ FRAMELESSHELPER_USE_NAMESPACE FluApp::FluApp(QObject *parent):QObject{parent}{ - connect(this,&FluApp::useSystemAppBarChanged,this,[=]{FramelessConfig::instance()->set(Global::Option::UseSystemAppBar,_useSystemAppBar);}); vsync(true); useSystemAppBar(false); + connect(this,&FluApp::useSystemAppBarChanged,this,[=]{FramelessConfig::instance()->set(Global::Option::UseSystemAppBar,_useSystemAppBar);}); } FluApp::~FluApp(){ diff --git a/src/FluNetwork.cpp b/src/FluNetwork.cpp index 98622d95..7573187c 100644 --- a/src/FluNetwork.cpp +++ b/src/FluNetwork.cpp @@ -189,7 +189,7 @@ void FluNetwork::handle(NetworkParams* params,NetworkCallable* c){ QNetworkRequest request(url); addHeaders(&request,params->_headerMap); QNetworkReply* reply; - sendRequest(&manager,request,params,reply,callable); + sendRequest(&manager,request,params,reply,i==0,callable); if(!QPointer(qApp)){ reply->deleteLater(); reply = nullptr; @@ -224,8 +224,9 @@ void FluNetwork::handle(NetworkParams* params,NetworkCallable* c){ if(params->_cacheMode != FluNetworkType::CacheMode::NoCache){ saveResponse(cacheKey,response); } - callable->success(response); + callable->success(response); } + printRequestEndLog(request,params,reply,response); break; }else{ if(i == params->getRetry()-1){ @@ -238,6 +239,7 @@ void FluNetwork::handle(NetworkParams* params,NetworkCallable* c){ } callable->error(httpStatus,reply->errorString(),response); } + printRequestEndLog(request,params,reply,response); } } reply->deleteLater(); @@ -387,7 +389,15 @@ QString FluNetwork::getCacheFilePath(const QString& key){ return cacheDir.absoluteFilePath(key); } -void FluNetwork::sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,QPointer callable){ +QString FluNetwork::map2String(const QMap& map){ + QStringList parameters; + for (auto it = map.constBegin(); it != map.constEnd(); ++it) { + parameters << QString("%1=%2").arg(it.key(), it.value().toString()); + } + return parameters.join(" "); +} + +void FluNetwork::sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,bool isFirst,QPointer callable){ QByteArray verb = params->method2String().toUtf8(); switch (params->_type) { case NetworkParams::TYPE_FORM:{ @@ -427,13 +437,12 @@ void FluNetwork::sendRequest(QNetworkAccessManager* manager,QNetworkRequest requ QString value; for (const auto& each : params->_paramMap.toStdMap()) { - value += QString("%1=%2").arg(QString(QUrl::toPercentEncoding(each.first)),QString(QUrl::toPercentEncoding(each.second.toString()))); + value += QString("%1=%2").arg(each.first,each.second.toString()); value += "&"; } if(!params->_paramMap.isEmpty()){ value.chop(1); } - qDebug()<sendCustomRequest(request,verb,data); } @@ -473,6 +482,45 @@ void FluNetwork::sendRequest(QNetworkAccessManager* manager,QNetworkRequest requ reply = manager->sendCustomRequest(request,verb); break; } + if(isFirst){ + printRequestStartLog(request,params); + } +} + +void FluNetwork::printRequestStartLog(QNetworkRequest request,NetworkParams* params){ + if(!_openLog){ + return; + } + qDebug()<<"<------"<"; + qDebug()<").arg(params->method2String().toUtf8()))<_url); + auto contentType = request.header(QNetworkRequest::ContentTypeHeader).toString(); + if(!contentType.isEmpty()){ + qDebug()< %1=%2").arg("Content-Type",contentType); + } + for(const QByteArray& header:request.rawHeaderList()){ + qDebug()< %1=%2").arg(header,request.rawHeader(header)); + } + if(!params->_queryMap.isEmpty()){ + qDebug()<<""<_queryMap)); + } + if(!params->_paramMap.isEmpty()){ + qDebug()<<""<_paramMap)); + } + if(!params->_fileMap.isEmpty()){ + qDebug()<<""<_fileMap)); + } + if(!params->_body.isEmpty()){ + qDebug()<<""<_body); + } +} + +void FluNetwork::printRequestEndLog(QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,const QString& response){ + if(!_openLog){ + return; + } + qDebug()<<"<------"<"; + qDebug()<").arg(params->method2String().toUtf8()))<_url); + qDebug()<<""<& headers){ + request->setHeader(QNetworkRequest::UserAgentHeader,QString::fromStdString("Mozilla/5.0 %1/%2").arg(QGuiApplication::applicationName(),QGuiApplication::applicationVersion())); QMapIterator iter(headers); while (iter.hasNext()) { @@ -509,6 +558,7 @@ FluNetwork::FluNetwork(QObject *parent): QObject{parent} { timeout(5000); retry(3); + openLog(false); cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation).append(QDir::separator()).append("network")); } diff --git a/src/FluNetwork.h b/src/FluNetwork.h index 24af00e7..1ad33466 100644 --- a/src/FluNetwork.h +++ b/src/FluNetwork.h @@ -94,6 +94,7 @@ class FluNetwork : public QObject Q_PROPERTY_AUTO(int,timeout) Q_PROPERTY_AUTO(int,retry) Q_PROPERTY_AUTO(QString,cacheDir) + Q_PROPERTY_AUTO(bool,openLog) QML_NAMED_ELEMENT(FluNetwork) QML_SINGLETON private: @@ -123,13 +124,16 @@ public: void handle(NetworkParams* params,NetworkCallable* result); void handleDownload(NetworkParams* params,NetworkCallable* result); private: - void sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,QPointer callable); + void sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,bool isFirst,QPointer callable); void addQueryParam(QUrl* url,const QMap& params); void addHeaders(QNetworkRequest* request,const QMap& headers); void saveResponse(QString key,QString response); QString readCache(const QString& key); bool cacheExists(const QString& key); QString getCacheFilePath(const QString& key); + QString map2String(const QMap& map); + void printRequestStartLog(QNetworkRequest request,NetworkParams* params); + void printRequestEndLog(QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,const QString& response); public: QJSValue _interceptor; };