日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决QNetworkAccessManager 请求返回UnknownNetworkError,无法继续请求问题

發布時間:2024/3/24 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决QNetworkAccessManager 请求返回UnknownNetworkError,无法继续请求问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提:

? ? ? ?使用QNetworkAccessManager 進行post請求, 如果在請求期間網絡斷開,網絡恢復后,依然會提示請求失敗,返回UnknownNetworkError。

問題解決:

QNetworkAccessManager 有一個函數

networkAccessible : NetworkAccessibility


This property holds whether the network is currently accessible via this network access manager.

If the network is not accessible the network access manager will not process any new network requests, all such requests will fail with an error. Requests with URLs with the file:// scheme will still be processed.

By default the value of this property reflects the physical state of the device. Applications may override it to disable all network requests via this network access manager by calling

e文不好的小伙伴,翻譯一下看看,大體意思請求網絡失敗后,會保存當前的網絡狀態, 導致后面繼續請求也是失敗。

根據文檔

Network requests can be reenabled again by calling

networkAccessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);

要恢復網絡請求調用一setNetworkAccessible即可。

只需要在QNetworkAccessManager執行get或者post的時候,獲取一下NetworkAccessible的狀態, 再設置一下就好了

void QPayHeartBeat::post() {if(m_NetManager){;QNetworkRequest request = setRequest();QByteArray data = setReplyData();//判斷一下網絡狀態, 如果為NotAccessible 重新設置一下if(m_NetManager->networkAccessible() == QNetworkAccessManager::NotAccessible){m_NetManager->setNetworkAccessible(QNetworkAccessManager::Accessible);}QNetworkReply *reply = m_NetManager->post(request, data);//這里是我自定義的超時類, 無需理會QReplyTimeOut *pTimeout = new QReplyTimeOut(reply, 1000 * 5);connect(pTimeout, &QReplyTimeOut::timeout, this, [&]{qDebug() << "time out";});connect(reply, SIGNAL(finished()), this, SLOT(replyFinished()));} }

困擾一個多月的問題, 終于解決了。。。果然有問題, 還得多看下文檔。有相同問題的小伙伴可以參考一下。

總結

以上是生活随笔為你收集整理的解决QNetworkAccessManager 请求返回UnknownNetworkError,无法继续请求问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。