Qt 網路請求

2021-10-06 01:55:42 字數 2054 閱讀 1664

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子類的單...