不要為鴻蒙的Http訪問(wèn)發(fā)愁了,因?yàn)槲覟槟惴庋b了工具類,6行代碼就可以
1.原始的網(wǎng)絡(luò)訪問(wèn),再加上多線程,會(huì)使程序臃腫
????????網(wǎng)絡(luò)請(qǐng)求在現(xiàn)代的應(yīng)用開發(fā)中必不可少,我們熟知的網(wǎng)絡(luò)請(qǐng)求框架真少,像HttpCient、HttpCient還有volley等,它們確實(shí)方便但鴻蒙還不能使用它們,還好我們有HttpURLConnection。使用其進(jìn)行網(wǎng)絡(luò)請(qǐng)求的示例代碼,如下圖所示(不用仔細(xì)研究):

????????相信你想說(shuō):HttpURLConnection雖略有繁瑣,但能用。然而,這并不是我們要處理網(wǎng)絡(luò)訪問(wèn)的全部。因?yàn)榫W(wǎng)絡(luò)操作耗時(shí)及不穩(wěn)定性,使得我們必須在子線程中進(jìn)行上述代碼的工作,等到網(wǎng)絡(luò)請(qǐng)求有響應(yīng)結(jié)果了,我們又需要回到主線程更新UI,這又使得我們的程序又胖了一圈。如果請(qǐng)求,請(qǐng)求再多一點(diǎn)呢?我們的程序就胖了好幾圈...
2.將多線程與網(wǎng)絡(luò)訪問(wèn)封裝,為程序瘦身
????????我們希望的網(wǎng)絡(luò)請(qǐng)求是這樣的:
?????????????????1.隱藏網(wǎng)絡(luò)訪問(wèn)細(xì)節(jié);
???????????????? 2.優(yōu)雅處理UI更新。
????????基于以上兩點(diǎn),我封裝了一套Http請(qǐng)求的工具類,最終的網(wǎng)絡(luò)訪問(wèn)會(huì)變成,下圖所示:

?????? 代碼解析:此get方法能夠在子線程中完成基于http網(wǎng)絡(luò)訪問(wèn), 當(dāng)訪問(wèn)成功或者失敗,就會(huì)分別回調(diào)onResponse或onFailure方法。而且這兩個(gè)方法是在主線程中完成回調(diào)的,所以是可以更新UI的。
????????我已將這套Http工具類的源代碼,開源上傳至github,地址如下:
????????https://github.com/zzrv5/ZZRHttpExample
????????題外:由于10月1放假,老婆大人已經(jīng)整備待發(fā),已對(duì)我怒目相斥。在顫抖中完成此代碼,如果有紕漏歡迎指正。
3.鴻蒙App Http請(qǐng)求操作步驟:
(此處只是標(biāo)出重點(diǎn),github上的源碼,可以復(fù)制)???????
????????3.1 添加網(wǎng)絡(luò)訪問(wèn)權(quán)限:
????????在config.json文件中添加,但要注意權(quán)限添加位置,別弄錯(cuò)了。還有像網(wǎng)絡(luò)訪問(wèn)權(quán)限,只給出權(quán)限的名字就可以了。如下圖所示:

????????3.2 設(shè)置訪問(wèn)模式
????????鴻蒙的默認(rèn)是https訪問(wèn)模式,如果您的請(qǐng)求網(wǎng)址是http開頭的,請(qǐng)?jiān)赾onfig.json文件中,將cleartextTraffic設(shè)定為true,如下配置:

????????3.3下載我的http工具類:
????????訪問(wèn)我的開源項(xiàng)目地址:https://github.com/zzrv5/ZZRHttpExample
????????下載方法如下圖所示:

????????3.4 我的項(xiàng)目結(jié)構(gòu)和調(diào)用實(shí)例
????????你可以直接把工具類拷貝到你的項(xiàng)目里直接用,實(shí)例中我給出的是get請(qǐng)求,你猜猜有沒有post方法呢?你可以試試:)
????????

4.關(guān)于我
????????我是ZZR老師,為什么叫ZZR老師,是因?yàn)閆ZR是我名字的縮寫,在B站錄制了很多鴻蒙(HarmonyOS)的教學(xué)視頻,對(duì)了,我其實(shí)是想錄視頻了的,怎么發(fā)上帖子了。