《鴻蒙HarmonyOS應用開發(fā)基礎》課件 第8章 動畫和網(wǎng)絡請求_第1頁
《鴻蒙HarmonyOS應用開發(fā)基礎》課件 第8章 動畫和網(wǎng)絡請求_第2頁
《鴻蒙HarmonyOS應用開發(fā)基礎》課件 第8章 動畫和網(wǎng)絡請求_第3頁
《鴻蒙HarmonyOS應用開發(fā)基礎》課件 第8章 動畫和網(wǎng)絡請求_第4頁
《鴻蒙HarmonyOS應用開發(fā)基礎》課件 第8章 動畫和網(wǎng)絡請求_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章動畫和網(wǎng)絡請求《鴻蒙HarmonyOS應用開發(fā)基礎》學習目標/Target掌握屬性動畫的使用方法,能夠實現(xiàn)屬性動畫效果掌握圖像幀動畫的使用方法,能夠實現(xiàn)圖像幀動畫效果掌握轉場動畫的使用方法,能夠實現(xiàn)轉場動畫效果掌握網(wǎng)絡權限的申請方法,能夠按需申請網(wǎng)絡權限學習目標/Target掌握啟動服務器的方法,能夠完成服務器的啟動掌握使用NetworkKit發(fā)送網(wǎng)絡請求的方法,能夠使用NetworkKit發(fā)送網(wǎng)絡請求掌握使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求的方法,能夠使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求掌握使用axios發(fā)送網(wǎng)絡請求的方法,能夠使用axios發(fā)送網(wǎng)絡請求章節(jié)概述/Summary在鴻蒙應用開發(fā)中,動畫和網(wǎng)絡請求是兩個常見的功能。通過為鴻蒙應用的UI添加流暢的動畫,可以增強用戶對應用的交互體驗和滿意度,同時也能夠有效地引導用戶完成操作或理解應用功能;通過為鴻蒙應用添加網(wǎng)絡請求功能,可以使鴻蒙應用能夠通過網(wǎng)絡獲取數(shù)據(jù),從而為用戶提供線上服務。本節(jié)將對動畫和網(wǎng)絡請求進行詳細講解。目錄/Contents8.18.2動畫網(wǎng)絡請求8.3階段案例——外賣點餐頁面動畫8.18.1.1屬性動畫

先定一個小目標!掌握屬性動畫的使用方法,能夠實現(xiàn)屬性動畫效果8.1.1屬性動畫屬性動畫是一種通過在一定時間范圍內改變組件的屬性值來實現(xiàn)動畫效果的技術。在鴻蒙應用開發(fā)中,可以通過設置屬性動畫來實現(xiàn)動畫效果,例如平移、縮放、旋轉等。8.1.1屬性動畫設置屬性動畫的方式有3種,分別是:使用animation屬性設置屬性動畫。使用animateTo()方法設置屬性動畫。使用animator對象設置屬性動畫。8.1.1屬性動畫1.使用animation屬性設置屬性動畫使用animation屬性設置屬性動畫時,需要為組件添加該屬性,并設置相應的動畫參數(shù),如動畫播放時長、曲線和延遲時間等。animation屬性接收一個value參數(shù),該參數(shù)是一個AnimateParam實例,包含了用于設置動畫效果的相關屬性。8.1.1屬性動畫AnimateParam實例的常用屬性如下表所示。屬性說明duration用于設置動畫時長,默認值為1000mstempo用于設置動畫播放速度,默認值為1。數(shù)值越大,動畫播放速度越快;數(shù)值越小,播放速度越慢。若值為0,則表示無動畫效果curve用于設置動畫曲線delay用于設置動畫延遲播放的時間(即延遲時間)。默認值為0ms,表示不延遲播放iterations用于設置動畫播放次數(shù),默認值為1。若設置為-1表示無限次播放,若設置為0表示不播放playMode用于設置動畫播放模式onFinish用于設置動畫播放完成時執(zhí)行的回調函數(shù)8.1.1屬性動畫curve屬性的常用取值如下。①Curve.EaseInOut:默認值,表示動畫以低速開始和結束。②Curve.Linear:表示動畫從頭到尾的速度都是相同的。③Curve.Ease:表示動畫以低速開始,然后加快,在結束前變慢。④Curve.EaseIn:表示動畫以低速開始。⑤Curve.EaseOut:表示動畫以低速結束。8.1.1屬性動畫playMode屬性的常用取值如下。①PlayMode.Normal:默認值,表示動畫按正常播放。②PlayMode.Reverse:表示動畫反向播放。③PlayMode.Alternate:表示動畫在奇數(shù)次(1、3、5……)正向播放,在偶數(shù)次(2、4、6……)反向播放。④PlayMode.AlternateReverse:表示動畫在奇數(shù)次反向播放,在偶數(shù)次正向播放。8.1.1屬性動畫下面演示animation屬性的使用方法。在entry/src/main/ets/pages目錄下創(chuàng)建AnimationPage.ets文件,定義兩個按鈕,分別是“動畫效果”和“動畫開始”按鈕,實現(xiàn)當點擊“動畫開始”按鈕時,改變“動畫效果”按鈕的寬度和高度并觸發(fā)動畫效果。8.1.1屬性動畫2.使用animateTo()方法設置屬性動畫animateTo()方法通過一個閉包函數(shù)設置組件的狀態(tài)變化,并為組件的狀態(tài)變化設置動畫,其語法格式如下。①value參數(shù)是一個AnimateParam實例,用于設置動畫效果的相關屬性。②event參數(shù)用于指定一個閉包函數(shù),閉包函數(shù)中設置的組件狀態(tài)變化會以動畫的形式展現(xiàn)。animateTo(value,event)8.1.1屬性動畫下面演示animateTo()方法的使用方法。在entry/src/main/ets/pages目錄下創(chuàng)建AnimateToPage.ets文件,定義一個“動畫效果”文本和一個“放大/縮小”按鈕,實現(xiàn)當點擊“放大/縮小”按鈕時,為文本添加放大和縮小的動畫效果。8.1.1屬性動畫3.使用animator對象設置屬性動畫animator對象(或稱為animator模塊)是ArkTS提供的動畫API,它可以為組件提供動畫效果,并可以對動畫進行控制。在使用animator對象前需要導入該對象,導入的方式有兩種,第1種導入方式如下。第2種導入方式如下。以上兩種導入方式的效果相同。importanimatorfrom'@ohos.animator';import{Animatorasanimator}from'@kit.ArkUI';8.1.1屬性動畫animator對象提供了create()方法,用于創(chuàng)建AnimatorResult實例,該實例用于對動畫進行控制。8.1.1屬性動畫create()方法的參數(shù)為AnimatorOptions實例,該實例用于設置動畫參數(shù),其常用屬性如下表所示。屬性說明duration動畫播放的時長,默認值為0,單位為毫秒easing動畫插值曲線delay動畫延時時間,默認值為0,單位為毫秒。設置為0時,表示不延時播放。設置為負數(shù)時表示動畫提前播放的時長,如果提前播放的時長大于動畫總時長,動畫直接過渡到終點fill動畫播放前后的樣式direction動畫播放模式iterations動畫播放次數(shù),默認值為1。設置為0時表示不播放,設置為-1時表示無限次播放。除-1之外的其他負數(shù)被視為無效取值,取值無效時動畫默認播放1次begin動畫插值起點,默認值為0end動畫插值終點,默認值為18.1.1屬性動畫easing屬性的常用取值如下。①'linear':動畫播放速度為線性。②'ease':默認值,動畫開始和結束時的播放速度較慢。③'ease-in':動畫播放速度先慢后快。④'ease-out':動畫播放速度先快后慢。⑤'ease-in-out':動畫播放先加速后減速。8.1.1屬性動畫fill屬性的常用取值如下。①'none':在動畫播放之前和之后都不會應用任何樣式到目標上。②'forwards':默認值,動畫結束后目標將保留最后一個關鍵幀的樣式。③'backwards':動畫將在延遲播放期間應用第一個關鍵幀的樣式。④'both':相當于同時設置'forwards'和'backwards'。8.1.1屬性動畫direction屬性的常用取值如下。①'normal':默認值,動畫正向循環(huán)播放。②'reverse':動畫反向循環(huán)播放。③'alternate':動畫交替循環(huán)播放,奇數(shù)次正向播放,偶數(shù)次反向播放。④'alternate-reverse':動畫反向交替循環(huán)播放,奇數(shù)次反向播放,偶數(shù)次正向播放。8.1.1屬性動畫AnimatorResult實例的常用方法如下表所示。方法說明play()啟動動畫。動畫會保留上一次的播放狀態(tài)pause()暫停動畫cancel()取消動畫reverse()以相反的順序播放動畫finish()結束動畫8.1.1屬性動畫AnimatorResult實例的常用事件如下表所示。事件說明onFrame接收到幀時觸發(fā)的事件onFinish動畫播放完成時觸發(fā)的事件onCancel動畫被取消時觸發(fā)的事件onRepeat動畫重復播放時觸發(fā)的事件8.1.1屬性動畫onFrame事件會在動畫播放時連續(xù)觸發(fā),它可以接收一個progress參數(shù),該參數(shù)表示動畫的當前值,該值與動畫參數(shù)中設置的begin屬性和end屬性有關,會從begin屬性的值過渡到end屬性的值。例如,當begin屬性的值為0,end屬性的值為360時,progress參數(shù)的值會從0過渡到360。8.1.1屬性動畫下面演示如何使用animator對象實現(xiàn)圖像旋轉動畫效果。8.1.2圖像幀動畫

先定一個小目標!掌握圖像幀動畫的使用方法,能夠實現(xiàn)圖像幀動畫效果8.1.2圖像幀動畫圖像幀動畫是一種通過逐幀播放圖像來實現(xiàn)動畫效果的技術,常用于制作簡單的動畫效果,例如加載動畫、購物車動畫等。使用ImageAnimator組件可以實現(xiàn)逐幀播放圖像,需要配置播放的圖像數(shù)組,每張圖像可以配置動畫時長。8.1.2圖像幀動畫ImageAnimator組件的常用屬性如下表所示。屬性說明images用于設置圖像幀信息集合,每一幀的幀信息包含圖像路徑、大小、位置和播放時長信息,不支持動態(tài)更新state用于設置動畫播放狀態(tài)duration用于設置動畫播放時長,默認值為1000ms,duration為0時表示不播放圖像;值的改變只會在下一次循環(huán)開始時生效;當images中任意一幀圖像設置了單獨的duration后,該屬性無效reverse用于設置動畫的播放順序,默認值為false表示從第1張圖像播放到最后1張圖像,當設置為true時表示從最后1張圖像播放到第1張圖像fixedSize用于設置圖像大小是否固定為組件大小,默認值為true,表示圖像大小與組件大小一致,此時設置圖像的width、height、top和left屬性是無效的;當設置為false時,表示每一張圖像的width、height、top和left屬性都要單獨設置fillMode用于設置動畫開始前和結束后的樣式iterations用于設置動畫播放次數(shù),默認值為1,表示播放一次。若設置為-1表示無限次播放,若設置為0時表示不播放8.1.2圖像幀動畫state屬性的常用取值如下。

①AnimationStatus.Initial:默認值,表示動畫處于初始狀態(tài)。②AnimationStatus.Running:表示動畫處于播放狀態(tài)。③AnimationStatus.Paused:表示動畫處于暫停狀態(tài)。④AnimationStatus.Stopped:表示動畫處于停止狀態(tài)。8.1.2圖像幀動畫fillMode屬性的常用取值如下。①FillMode.Forwards:默認值,表示保留動畫執(zhí)行期間最后一個關鍵幀的樣式。②FillMode.None:表示動畫未執(zhí)行時不改變樣式,動畫播放完成后恢復初始樣式。③FillMode.Backwards:表示動畫將立即應用第一個關鍵幀中的樣式,并在延遲期間保持該樣式。④FillMode.Both:表示動畫將同時遵循Forwards和Backwards規(guī)則,即在動畫開始時應用第一個關鍵幀的樣式,在動畫結束時保持最后一個關鍵幀的樣式。8.1.2圖像幀動畫下面演示如何使用ImageAnimator組件實現(xiàn)購物車動畫效果。8.1.3轉場動畫

先定一個小目標!掌握轉場動畫的使用方法,能夠實現(xiàn)轉場動畫效果8.1.3轉場動畫轉場動畫是一種具有平滑過渡效果的動畫,通常用于在畫面切換時使切換過程流暢自然,以增強用戶體驗。常用的轉場動畫包括:模態(tài)轉場動畫出現(xiàn)/消失轉場動畫、共享元素轉場動畫8.1.3轉場動畫1.模態(tài)轉場動畫模態(tài)轉場動畫是一種將新界面覆蓋在舊界面之上,而舊界面不消失的轉場方式。在ArkUI的通用屬性中,能夠實現(xiàn)彈出新界面并具有模態(tài)轉場動畫的常用屬性有:bindContentCover屬性bindSheet屬性bindMenu屬性bindContextMenu屬性bindPopup屬性8.1.3轉場動畫(1)bindContentCover屬性bindContentCover屬性用于將全屏模態(tài)界面綁定到組件上,可以控制全屏模態(tài)界面的顯示和隱藏,其語法格式如下。參數(shù)isShow用于指定是否顯示全屏模態(tài)界面。參數(shù)builder用于配置全屏模態(tài)界面的內容。參數(shù)options用于配置全屏模態(tài)界面的可選屬性,其中用于設置轉場時的過渡動畫效果的是modalTransition屬性,它的可選值如下。①ModalTransition.NONE:無動畫過渡。②ModalTransition.DEFAULT:上下切換過渡。③ModalTransition.ALPHA:透明漸變過渡。bindContentCover(isShow,builder,options)8.1.3轉場動畫(2)bindSheet屬性bindSheet屬性用于將半屏模態(tài)界面綁定到組件上,可以控制半屏模態(tài)界面的顯示和隱藏,其語法格式如下。參數(shù)isShow用于指定是否顯示半屏模態(tài)界面。參數(shù)builder用于配置半屏模態(tài)界面的內容。參數(shù)options用于配置半屏模態(tài)界面的可選屬性,其中包括height(半屏模態(tài)高度)、showClose(是否顯示關閉圖標)、dragBar(是否顯示控制條)、title(半屏模態(tài)面板的標題)等屬性。bindSheet(isShow,builder,options)8.1.3轉場動畫(3)bindMenu屬性bindMenu屬性用于為組件綁定菜單,可以控制菜單的顯示和隱藏,其語法格式如下。

參數(shù)isShow用于指定是否顯示菜單,目前不支持雙向數(shù)據(jù)綁定。參數(shù)content用于指定配置菜單項圖標和文本的數(shù)組,或者自定義組件。參數(shù)options用于配置彈出菜單的參數(shù),包括title(菜單標題)、showInSubWindow(是否在子窗口中顯示菜單)等屬性。bindMenu(isShow,content,options)8.1.3轉場動畫(4)bindContextMenu屬性bindContextMenu屬性用于為組件綁定上下文菜單。它和bindMenu屬性的區(qū)別是,bindContextMenu屬性綁定的菜單一般是通過長按屏幕操作或右擊操作觸發(fā)的,而bindMenu屬性綁定的菜單一般是通過點擊屏幕操作或單擊操作觸發(fā)的。

bindContextMenu屬性的語法格式如下。參數(shù)isShown用于指定是否顯示上下文菜單,目前不支持雙向數(shù)據(jù)綁定。參數(shù)content用于指定配置菜單項圖標和文本的數(shù)組,或者自定義組件。參數(shù)options用于配置彈出菜單的參數(shù),包括placement(菜單顯示的位置)、arrowOffset(菜單左側的水平偏移或菜單頂部的垂直偏移)等屬性。bindContextMenu(isShown,content,options)8.1.3轉場動畫(5)bindPopup屬性bindPopup屬性用于為組件綁定氣泡提示,即一種氣泡樣式的提示框,該提示框通常用于對某個組件進行功能說明。bindPopup屬性的語法格式如下。

參數(shù)show表示提示框顯示狀態(tài)。參數(shù)popup用于配置彈出氣泡提示的參數(shù),包括message(提示內容)、showInSubWindow(是否在子窗口中顯示)、textColor(文本顏色)、font(字體)等。bindPopup(show,popup)8.1.3轉場動畫下面以bindContentCover屬性為例演示轉場動畫的使用方法,實現(xiàn)顯示廣告倒計時的效果。8.1.3轉場動畫2.出現(xiàn)/消失轉場動畫使用組件的transition屬性可以在一個組件出現(xiàn)或者消失時添加動畫效果。該屬性接收TransitionEffect實例作為參數(shù),該實例用于指定轉場效果。通過調用TransitionEffect類的靜態(tài)方法可以創(chuàng)建TransitionEffect實例,這些靜態(tài)方法如下。方法說明opacity()用于設置組件轉場時的不透明度效果translate()用于設置組件轉場時的平移效果scale()用于設置組件轉場時的縮放效果rotate()用于設置組件轉場時的旋轉效果move()用于指定組件轉場時從屏幕邊緣滑入或向屏幕邊緣滑出的效果asymmetric()用于指定非對稱的轉場效果,即出現(xiàn)和消失采用不同的轉場效果8.1.3轉場動畫①opacity()方法的參數(shù)表示不透明度,取值范圍為0~1,1表示不透明,0表示完全透明。②translate()方法的參數(shù)是一個包含3個可選屬性的對象,其中屬性x表示x軸的平移距離;屬性y表示y軸的平移距離;屬性z表示z軸的平移距離。③scale()方法的參數(shù)是一個包含5個可選屬性的對象,具體如下。屬性x表示x軸的縮放倍數(shù)。當x>1時沿x軸方向放大,x=1時保持不變,當0≤x<1時沿x軸方向縮小,當x<0時沿x軸翻轉并縮放。屬性y表示y軸的縮放倍數(shù)。當y>1時沿y軸方向放大,y=1時保持不變,當0≤y<1時沿y軸方向縮小,當y<0時沿y軸翻轉并縮放。屬性z表示z軸的縮放倍數(shù)。當z>1時沿z軸方向放大,z=1時保持不變,當0≤z<1時沿z軸方向縮小,當z<0時沿z軸翻轉并縮放。屬性centerX表示變換中心點x軸坐標。屬性centerY表示變換中心點y軸坐標。8.1.3轉場動畫④rotate()方法的參數(shù)是一個包含多個屬性的對象,其中最常用的是必選屬性angle,它表示旋轉角度,取值為正時表示相對于旋轉軸方向順時針轉動,取值為負時表示相對于旋轉軸方向逆時針轉動。取值可為number類型或string類型,例如90、'90deg'都代表90°。

⑤move()方法只有一個參數(shù),該參數(shù)有4個可選值,具體如下。

TransitionEdge.TOP:表示屏幕的上邊緣。

TransitionEdge.BOTTOM:表示屏幕的下邊緣。

TransitionEdge.START:表示屏幕的左邊緣。

TransitionEdge.END:表示屏幕的右邊緣。⑥asymmetric()方法有兩個參數(shù),第1個參數(shù)表示出現(xiàn)時的轉場效果,第2個參數(shù)表示消失時的轉場效果。如果不調用asymmetric()方法,則默認情況下消失時的轉場效果與出現(xiàn)時的轉場效果完全相反。8.1.3轉場動畫TransitionEffect類還提供了一些靜態(tài)屬性,用于使用預設的轉場效果,這些靜態(tài)屬性的值也是TransitionEffect實例,具體如下表所示。屬性說明IDENTITY禁用轉場效果OPACITY用于指定不透明度為0的轉場效果SLIDE用于指定出現(xiàn)時從左側滑入、消失時從右側滑出的轉場效果SLIDE_SWITCH用于指定出現(xiàn)時從右側先縮小再放大滑入、消失時從左側先縮小再放大滑出的轉場效果8.1.3轉場動畫TransitionEffect實例的常用方法如下表所示。方法說明combine()通過組合的方式實現(xiàn)多種轉場效果animation()指定組件轉場的動畫參數(shù)8.1.3轉場動畫①combine()方法的參數(shù)表示要組合的轉場效果,該轉場效果會與調用combine()方法的轉場效果合并,例如A.combine(B)表示將轉場效果B與轉場效果A合并。該方法的返回值為合并后的轉場效果。

②animation()方法的參數(shù)是一個表示動畫參數(shù)的對象,該對象的常用屬性如下。

duration:動畫播放時長,默認值為1000,單位為毫秒。

tempo:動畫播放速度,值越大則動畫播放越快,值越小則播放越慢,默認值為1,值為0時表示無動畫效果。

curve:動畫曲線,默認值為Curve.EaseInOut,表示動畫以低速開始和結束。

delay:動畫延遲播放時間,默認值為0,單位為毫秒,默認不延時播放。iterations:動畫播放次數(shù),默認值為1,設置為-1時表示無限次播放,設置為0時表示不播放。8.1.3轉場動畫下面演示transition屬性的使用方法,實現(xiàn)3種轉場效果的組合,分別是不透明度效果、旋轉效果、平移效果,示例代碼如下。.transition(TransitionEffect.OPACITY.animation({duration:1000}).combine(TransitionEffect.rotate({angle:-180})).combine(TransitionEffect.move(TransitionEdge.TOP)))8.1.3轉場動畫下面演示如何使用transition屬性實現(xiàn)圖像的轉場效果。8.1.3轉場動畫3.共享元素轉場動畫共享元素轉場動畫是指在頁面切換時,將兩個頁面中相同的共享元素在切換過程中自動完成過渡,從而營造出連貫和自然的過渡效果。其中,共享元素是指兩個頁面中需要添加過渡效果的組件。共享元素轉場動畫通過sharedTransition屬性實現(xiàn),其語法格式如下。id參數(shù)用于將組件標識為共享元素,當兩個頁面存在具有相同id的共享元素時,即可實現(xiàn)共享元素轉場動畫。sharedTransition(id,options)8.1.3轉場動畫options參數(shù)是一個用于設置動畫參數(shù)的對象,其常用屬性如下。屬性說明duration用于設置共享元素轉場動畫播放時長,默認值為1000,單位為毫秒curve用于設置共享元素轉場動畫曲線,默認值為Curve.Linear,表示動畫從頭到尾的速度都是相同的delay用于設置共享元素轉場動畫延遲執(zhí)行的時間。默認值為0,表示不延遲播放,單位為毫秒motionPath用于設置運動路徑信息zIndex用于設置z軸type用于設置動畫類型8.1.3轉場動畫motionPath屬性的常用可選值如下。

①path:用于設置路徑。

②from:用于設置路徑的起始值。

③to:用于設置路徑的終止值。

④rotatable:表示是否跟隨路徑進行旋轉,默認值為false,表示不旋轉。

type屬性的常用可選值如下。

①SharedTransitionEffectType.Exchange:默認值,表示將源頁面元素移動到目標頁面元素位置并適當縮放。

②SharedTransitionEffectType.Static:表示目標頁面元素的位置保持不變,可以配置不透明度動畫。

當type屬性值為SharedTransitionEffectType.Exchange時,motionPath才會生效。注意8.1.3轉場動畫下面演示如何使用sharedTransition屬性實現(xiàn)頁面跳轉時放大圖像的轉場效果。網(wǎng)絡請求8.28.2.1申請網(wǎng)絡權限

先定一個小目標!掌握網(wǎng)絡權限的申請方法,能夠按需申請網(wǎng)絡權限8.2.1申請網(wǎng)絡權限鴻蒙具有嚴格的應用權限管控,以確保應用合理地使用每項權限。若應用需要發(fā)送網(wǎng)絡請求,則需要申請網(wǎng)絡權限。在正式學習如何申請網(wǎng)絡權限之前,介紹一下鴻蒙的權限機制。8.2.1申請網(wǎng)絡權限根據(jù)鴻蒙開發(fā)文檔的說明,開發(fā)者在開發(fā)應用時進行的權限申請需要遵循以下原則。①應用(包括應用引用的第三方庫)所需權限必須在應用的配置文件(entry/src/main/module.json5)中嚴格按照權限開發(fā)指導逐個聲明。②權限申請滿足最小化原則,禁止申請非必要的、已廢棄的權限。應用申請過多權限會引起用戶對應用安全性的擔憂以及使用體驗變差,也會影響到應用的安裝率和留存率。③應用申請敏感權限時,必須填寫權限使用理由。敏感權限通常是指與用戶隱私密切相關的權限,包括地理位置、相機、麥克風、日歷、健身運動、身體傳感器、音樂、文件、圖片、視頻等權限。④應用敏感權限須在對應業(yè)務功能執(zhí)行前動態(tài)申請,滿足隱私最小化要求。⑤用戶拒絕授予某個權限后,應用與此權限無關的其他業(yè)務功能應能正常使用。8.2.1申請網(wǎng)絡權限根據(jù)授權方式的不同,權限類型可分為system_grant(系統(tǒng)授權)和user_grant(用戶授權),具體介紹如下。①system_grant:在該類型的權限許可下,應用可以訪問不涉及用戶或設備的敏感信息的數(shù)據(jù);應用被允許執(zhí)行對操作系統(tǒng)和其他應用產生的影響可控的操作。②user_grant:在該類型的權限許可下,應用可以訪問涉及用戶或設備的敏感信息的數(shù)據(jù);應用被允許執(zhí)行可能對操作系統(tǒng)或者其他應用產生嚴重影響的操作。8.2.1申請網(wǎng)絡權限system_grant權限和user_grant權限在申請方式上的區(qū)別如下。①對于申請system_grant權限的應用,操作系統(tǒng)會在用戶安裝應用時,自動把相應權限授予應用。②對于申請user_grant權限的應用,不僅需要在安裝包中申請權限,還需要在應用運行時通過彈窗的方式請求用戶授權。在用戶手動允許授權后,應用才會真正獲取相應權限,從而成功訪問并操作目標對象。8.2.1申請網(wǎng)絡權限鴻蒙中的網(wǎng)絡權限屬于system_grant權限,申請方式比較簡單,應用不需要向用戶發(fā)起請求即可獲取該權限。若要申請網(wǎng)絡權限,可以在entry/src/main/module.json5文件中的module配置項內添加申請網(wǎng)絡權限的代碼,示例代碼如下。"requestPermissions":[{"name":"ohos.permission.INTERNET"},{"name":"ohos.permission.GET_NETWORK_INFO"}]8.2.2啟動服務器

先定一個小目標!掌握啟動服務器的方法,能夠完成服務器的啟動8.2.2啟動服務器要想學習如何發(fā)送網(wǎng)絡請求,需要準備一個可以接收網(wǎng)絡請求的服務器。本課程在配套源碼中提供了一個基于Node.js開發(fā)的服務器,雙擊“啟動服務器.bat”文件即可啟動服務器。8.2.2啟動服務器服務器啟動成功后,會出現(xiàn)如下信息。serverrunningat00:3000上述信息中的IP地址00是不固定的,我們應以自己的IP地址為準。注意8.2.2啟動服務器服務器的接口如下。①獲取所有數(shù)據(jù)的接口:00:3000/student。請求方式:GET。返回結果:{"name":"小明","age":18}。②獲取指定字段數(shù)據(jù)的接口:00:3000/student?field=name。請求方式:GET。返回結果:"小明"。③提交數(shù)據(jù)的接口:00:3000/student。請求方式:POST。請求體:{"name":"小明","age":18}。返回結果:{"message":"Datasavedsuccessfully"}。8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求

先定一個小目標!掌握使用NetworkKit發(fā)送網(wǎng)絡請求的方法,能夠使用NetworkKit發(fā)送網(wǎng)絡請求8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求NetworkKit又被稱為網(wǎng)絡服務,它主要提供HTTP(HypertextTransferProtocol,超文本傳送協(xié)議)數(shù)據(jù)請求、WebSocket連接、Socket連接、網(wǎng)絡連接管理以及MDNS(MulticastDNS,多播DNS)管理功能,其中最常用的是HTTP數(shù)據(jù)請求功能。8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求NetworkKit提供了http對象(或稱為http模塊)用于實現(xiàn)HTTP數(shù)據(jù)請求,導入http對象的示例代碼如下。導入http對象后,需要調用http對象的createHttp()方法創(chuàng)建HttpRequest實例,每個HttpRequest實例代表一個HTTP請求任務,并且不可復用,示例代碼如下。import{http}from'@kit.NetworkKit';consthttpRequest=http.createHttp();8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求通過調用HttpRequest實例的request()方法可以發(fā)送網(wǎng)絡請求,該方法的語法格式如下。參數(shù)url表示請求的URL。參數(shù)options表示用于設置請求的可選參數(shù)的對象。參數(shù)callback表示發(fā)送請求后執(zhí)行的回調函數(shù)。參數(shù)options可以省略,省略時,默認使用GET請求方式,并且參數(shù)callback變?yōu)榈?個參數(shù)。request(url,options,callback);8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求request()方法的參數(shù)options的常用屬性如下表所示。屬性說明method請求方式extraData發(fā)送請求的額外數(shù)據(jù),默認不發(fā)送額外數(shù)據(jù)expectDataType指定返回數(shù)據(jù)的類型,默認不指定返回數(shù)據(jù)的類型。如果指定了返回數(shù)據(jù)的類型,程序將會優(yōu)先返回指定類型的數(shù)據(jù)usingCache是否使用緩存,默認值為true,表示使用緩存。緩存跟隨當前進程生效,新緩存會替換舊緩存。priority請求并發(fā)優(yōu)先級,值越大優(yōu)先級越高,取值范圍為1~1000,默認值為1header請求頭字段8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求method屬性的可選值如下。

①RequestMethod.GET:表示GET請求方式,一般用于查詢數(shù)據(jù)。②RequestMethod.POST:表示POST請求方式,一般用于提交數(shù)據(jù)。③RequestMethod.PUT:表示PUT請求方式,一般用于修改數(shù)據(jù)。④RequestMethod.DELETE:表示DELETE請求方式,一般用于刪除數(shù)據(jù)。

expectDataType屬性的常用可選值如下。

①HttpDataType.STRING:string類型。

②HttpDataType.OBJECT:對象類型。8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求request()方法的參數(shù)callback表示一個回調函數(shù),該函數(shù)的參數(shù)是一個HttpResponse實例,該實例的常用屬性如下表所示。屬性說明result服務器的響應內容resultType服務器的響應內容的類型responseCode服務器的響應狀態(tài)碼header服務器的響應頭cookies服務器的響應cookiesperformanceTiming請求的各個階段的耗時8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求request()方法還支持使用await關鍵字。當使用await關鍵字調用request()方法時,要省略callback參數(shù),通過返回值接收HttpResponse實例。

在使用request()方法時需要注意以下3點。

①僅支持接收數(shù)據(jù)大小為5MB以內的數(shù)據(jù)。②

若請求的URL包含中文字符或其他非ASCII字符,需先調用encodeURL()函數(shù)進行編碼,該函數(shù)的參數(shù)為待編碼的字符串,返回值為編碼后的字符串。

③當請求發(fā)送完成后,需要調用destroy()方法銷毀HttpRequest實例,從而釋放資源,該方法沒有參數(shù)且沒有返回值。8.2.3使用NetworkKit發(fā)送網(wǎng)絡請求下面演示http對象的使用方法。8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求

先定一個小目標!掌握使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求的方法,能夠使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求RemoteCommunicationKit又被稱為遠場通信服務,它是鴻蒙提供的另一個用于發(fā)送網(wǎng)絡請求的工具。相比NetworkKit,RemoteCommunicationKit

更專注于HTTP數(shù)據(jù)請求功能,提供了更加便捷的操作方式。8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求若使用RemoteCommunicationKit,需要先導入rcp對象(或稱為rcp模塊),導入rcp對象的示例代碼如下。導入rcp對象后,需要通過createSession()方法創(chuàng)建Session實例,示例代碼如下。createSession()方法的返回值session是一個Session實例,它表示一個HTTP會話。import{rcp}from'@kit.RemoteCommunicationKit';constsession=rcp.createSession();8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求Session實例的常用方法如下表所示。方法說明fetch()發(fā)送請求get()發(fā)送GET方式的請求post()發(fā)送POST方式的請求put()發(fā)送PUT方式的請求head()發(fā)送HEAD方式的請求delete()發(fā)送DELETE方式的請求downloadToFile()發(fā)送下載文件的請求uploadFromFile()發(fā)送上傳文件的請求cancel()取消請求close()關閉會話8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求get()方法的語法格式如下。參數(shù)url表示請求的URL。參數(shù)destination是可選參數(shù),表示響應的目標位置或目的地,通常不需要設置該參數(shù)。

post()方法的語法格式如下。

參數(shù)url表示請求的URL。參數(shù)content是可選參數(shù),表示請求的正文部分的內容。參數(shù)destination是可選參數(shù),表示響應的目標位置或目的地,通常不需要設置該參數(shù)。get(url,destination?)post(url,content?,destination?)8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求get()方法和post()方法的返回值都是Promise對象,用于對請求的結果進行處理。Promise對象的then()方法的第1個參數(shù)是一個回調函數(shù),該回調函數(shù)接收Response實例,該實例表示響應結果。Response實例的常用屬性如下表所示。屬性說明body服務器的響應內容statusCode服務器的響應狀態(tài)碼headers服務器的響應頭cookies服務器的響應cookies8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求Response實例的常用方法如下表所示。close()方法的語法格式如下。close()方法沒有參數(shù)和返回值。方法說明toString()獲取字符串類型的服務器響應結果toJSON()獲取JSON反序列化后的服務器響應結果close()8.2.4使用RemoteCommunicationKit發(fā)送網(wǎng)絡請求下面演示rcp對象的使用方法。8.2.5使用axios發(fā)送網(wǎng)絡請求

先定一個小目標!掌握使用axios發(fā)送網(wǎng)絡請求的方法,能夠使用axios發(fā)送網(wǎng)絡請求8.2.5使用axios發(fā)送網(wǎng)絡請求axios是一個第三方的網(wǎng)絡請求庫,它常用于Web前端開發(fā)中。鴻蒙允許開發(fā)者使用axios發(fā)送網(wǎng)絡請求,從而讓具有Web前端開發(fā)經驗的開發(fā)者可以快速上手鴻蒙開發(fā)。8.2.5使用axios發(fā)送網(wǎng)絡請求鴻蒙為開發(fā)者提供了“OpenHarmony三方庫中心倉”平臺,開發(fā)者可以通過該平臺快速獲取第三方庫,也可以將自己的代碼共享到該平臺。在該平臺中可以找到axios的發(fā)布頁面。8.2.5使用axios發(fā)送網(wǎng)絡請求1.安裝axios在鴻蒙項目中安裝axios需要使用ohpm。ohpm是鴻蒙第三方庫的包管理工具,它類似Web前端開發(fā)中的npm工具,其用法也與npm工具非常相似。使用ohpm安裝axios有兩種方式:(1)通過執(zhí)行命令的方式安裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論