1.原始的網(wǎng)絡(luò)訪(fǎng)問(wèn),再加上多線(xiàn)程,會(huì)使程序臃腫
網(wǎng)絡(luò)請(qǐng)求在現(xiàn)代的應(yīng)用開(kāi)發(fā)中必不可少,我們熟知的網(wǎng)絡(luò)請(qǐng)求框架還真不少,像HttpClient、OkHttp還有volley等,它們確實(shí)方便但鴻蒙還不能使用它們,還好我們有HttpURLConnection。使用其進(jìn)行網(wǎng)絡(luò)請(qǐng)求的示例代碼,如下圖所示(不用仔細(xì)研究):
相信你想說(shuō):HttpURLConnection雖略有繁瑣,但能用。然而,這并不是我們要處理網(wǎng)絡(luò)訪(fǎng)問(wèn)的全部。因?yàn)榫W(wǎng)絡(luò)操作耗時(shí)及不穩(wěn)定性,使得我們必須在子線(xiàn)程中進(jìn)行上述代碼的工作,等到網(wǎng)絡(luò)請(qǐng)求有響應(yīng)結(jié)果了,我們又需要回到主線(xiàn)程更新UI,這又使得我們的程序又胖了一圈。如果請(qǐng)求,再多一點(diǎn)呢?我們的程序就胖了好幾圈...
2.將多線(xiàn)程與網(wǎng)絡(luò)訪(fǎng)問(wèn)封裝,為程序瘦身
我們希望的網(wǎng)絡(luò)請(qǐng)求是這樣的:1.隱藏網(wǎng)絡(luò)訪(fǎng)問(wèn)細(xì)節(jié);2.優(yōu)雅處理UI更新。
基于以上兩點(diǎn),我封裝了一套Http請(qǐng)求的工具類(lèi),最終的網(wǎng)絡(luò)訪(fǎng)問(wèn)會(huì)變成——這樣:
ZZRHttp.get(url, new ZZRCallBack.CallBackString() { @Override public void onFailure(int code, String errorMessage) { //http訪(fǎng)問(wèn)出錯(cuò),此部分在主線(xiàn)程中工作,可以更新UI等操做。 } @Override public void onResponse(String response) { //http訪(fǎng)問(wèn)成功,此部分在主線(xiàn)程中工作,可以更新UI等操作。 } });
代碼解析:此get方法能夠在子線(xiàn)程中完成基于http網(wǎng)絡(luò)訪(fǎng)問(wèn), 當(dāng)訪(fǎng)問(wèn)成功或者失敗,就會(huì)分別回調(diào)onResponse或onFailure方法,這兩個(gè)方法是在主線(xiàn)程中完成回調(diào)的,所以可以更新UI。 我已將這套Http工具類(lèi)的源代碼,開(kāi)源上傳至github,地址如下:https://github.com/zzrv5/ZZRHttp
3.鴻蒙Http請(qǐng)求操作步驟:
3.1 添加網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限:
在config.json文件中的module中添加,網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限,代碼如下所示:
"module": { "reqPermissions": [{"name":"ohos.permission.INTERNET"}], ...
3.2 設(shè)置訪(fǎng)問(wèn)模式
鴻蒙的默認(rèn)是https訪(fǎng)問(wèn)模式,如果您的請(qǐng)求網(wǎng)址是http開(kāi)頭的,請(qǐng)?jiān)赾onfig.json文件中的deviceConfig下,添加如下設(shè)置:
"deviceConfig": { "default": { "network": { "cleartextTraffic": true } } },
3.3 添加ZZRHttp依賴(lài)
在build.gradle文件的dependencies中,添加如下配置,引入ZZRhttp:
dependencies { implementation 'com.zzrv5.zzrhttp:ZZRHttp:1.0.1' ... }
3.4 進(jìn)行網(wǎng)絡(luò)訪(fǎng)問(wèn)
就是這么簡(jiǎn)單,代碼如下:
ZZRHttp.get(url, new ZZRCallBack.CallBackString() { @Override public void onFailure(int code, String errorMessage) { //http訪(fǎng)問(wèn)出錯(cuò),此部分在主線(xiàn)程中工作,可以更新UI等操做。 } @Override public void onResponse(String response) { //http訪(fǎng)問(wèn)成功,此部分在主線(xiàn)程中工作,可以更新UI等操作。 } });
編輯:hfy
-
HTTP
+關(guān)注
關(guān)注
0文章
525瀏覽量
33499 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2642瀏覽量
68082
發(fā)布評(píng)論請(qǐng)先 登錄
基于Java開(kāi)發(fā)的鴻蒙網(wǎng)絡(luò)訪(fǎng)問(wèn)方面的代碼
Linux下搭建簡(jiǎn)易的HTTP服務(wù)器完成圖片顯示

鴻蒙網(wǎng)絡(luò)開(kāi)發(fā)學(xué)習(xí):【ylong_http】

【HarmonyOS】鴻蒙系統(tǒng)介紹 和 編譯環(huán)境搭建
鴻蒙系統(tǒng)———環(huán)境搭建之實(shí)現(xiàn)網(wǎng)絡(luò)共享
HarmonyOS應(yīng)用開(kāi)發(fā)-網(wǎng)絡(luò)訪(fǎng)問(wèn)工具的使用體驗(yàn)
分布式環(huán)境下的Web資源訪(fǎng)問(wèn)控制研究
用Cisco路由器HTTP訪(fǎng)問(wèn)
如何在C語(yǔ)言環(huán)境下對(duì)其訪(fǎng)問(wèn)歸納
OpenHarmony上使用的Http網(wǎng)絡(luò)框架教程
Linux下搭建簡(jiǎn)易的HTTP服務(wù)器完成圖片顯示
鴻蒙開(kāi)發(fā)實(shí)戰(zhàn):【ylong_http】解析

鴻蒙OpenHarmony【 配置遠(yuǎn)程訪(fǎng)問(wèn)環(huán)境】

評(píng)論