qnetworkrequest:網路請求
qnetworkaccessmanager:協調網路操作(發射訊號/身份驗證請求/**)
qnetworkreply:請求應答
請求完成觸發訊號:finished(qnetworkreply*)
進度:downloadprogress(qint64, qint64)
可讀:readyread()
傳送請求:get/post
1. 建立乙個請求
qnetworkrequest request;
request.
seturl
(qurl
(url));
2. 建立乙個管理器
qnetworkaccessmanager *manager =
newqnetworkaccessmanager
(this);
3. 連線請求結束訊號
connect
(manager,
signal
(finished
(qnetworkreply*))
,[=]
(qnetworkreply *reply)
else
if(reply-
>
isrunning()
) reply-
>
deletelater()
;// 並沒有將物件立即銷毀,而是向主訊息迴圈傳送了乙個event,下一次主訊息迴圈收到這個event之後才會銷毀物件
reply =
null;}
);4. 傳送get請求
qnetworkreply *reply = manager-
>
get(request)
;
qeventloop loop;
qtimer timer;
timer.
setsingleshot
(true);
// 只會觸發一次
qnetworkreply *reply = manager-
>
get(
qnetworkrequest
(qurl
(url)))
;connect
(manager,
signal
(finished
(qnetworkreply *))
,&loop,
slot
(quit()
));connect
(&timer,
signal
(timeout()
),&loop,
slot
(quit()
));timer.
start
(4000);
loop.
exec()
;// 進入事件迴圈, 直到reply的finished()訊號發出, 這個語句才能
if(timer.
isactive()
)// 定時器還在工作,即在規定時間內請求完成
if(reply-
>
isrunning()
)reply-
>
deletelater()
;reply =
null
;
// 主機名
qstring localhostname = qhostinfo::
localhostname()
;qhostinfo info = qhostinfo::
fromname
(localhostname)
;/**
* @description: 獲取ip位址
* @param
* @return:
*/qstring getip()
return address.
tostring()
;}}return"";
}
QT支援https網路請求
qt自帶的老版本openssl1.0.x在今年 2019 就要結束lts支援了,那麼從qt5.12.4開始,qt將啟用1.1.x,新版本帶來的tls1.3,以前經典的名字叫libeay32.dll和ssleay32.dll,現在改名變成了libcrypto 1 1.dll 和libssl 1 1.d...
qt截獲html請求
qtwebkit載入html頁面,html中會有很多的請求,比如 1.定義乙個類,繼承qnetworkaccessmanager 請求 ifndef networkaccessmanager h define networkaccessmanager h include include includ...
swift 同步 網路請求 swift網路請求
swift同樣可以實現oc中afnetworking mjextension的效果,實現方法是alamofire swiftyjson handyjson alamofire 網路請求 swiftyjson 資料解析 handyjson 對映為model 一 獲取sessionmanager子類的單...