自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS Sample之NetworkManagement網(wǎng)絡(luò)管理功能

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理 OpenHarmony
本示例演示了如何使用網(wǎng)絡(luò)管理模塊相關(guān)接口,設(shè)置DevEco Studio開發(fā)環(huán)境,DevEco Studio開發(fā)環(huán)境需要依賴于網(wǎng)絡(luò)環(huán)境,需要連接上網(wǎng)絡(luò)才能確保工具的正常使用。

[[425392]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

1.介紹

本示例演示了如何使用網(wǎng)絡(luò)管理模塊相關(guān)接口,演示了以下功能:

功能1:使用默認(rèn)網(wǎng)絡(luò),打開連接,發(fā)送HTTP請(qǐng)求。

功能2:統(tǒng)計(jì)指定UID的上行/下行流量。

功能3:使用Socket方式實(shí)現(xiàn)不同設(shè)備間通信。

此功能需要打開WIFI,并且通信的設(shè)備連接相同的WIFI 組成局域網(wǎng)。

操作上,先啟動(dòng)服務(wù)端,再啟動(dòng)客戶端,然后從客戶端發(fā)送消息,查看服務(wù)端是否收到消息。

功能4:HTTP緩存的使用,創(chuàng)建緩存,供下一次請(qǐng)求使用,減少數(shù)據(jù)流量和加載時(shí)間。

注意,需要以下權(quán)限:

ohos.permission.GET_NETWORK_INFO 獲取網(wǎng)絡(luò)連接信息。

ohos.permission.SET_NETWORK_INFO 修改網(wǎng)絡(luò)連接狀態(tài)。

ohos.permission.INTERNET 允許程序打開網(wǎng)絡(luò)套接字,進(jìn)行網(wǎng)絡(luò)連接。

詳情見官方文檔 網(wǎng)絡(luò)管理開發(fā)概述

2.搭建環(huán)境

安裝DevEco Studio,詳情請(qǐng)參考DevEco Studio下載

設(shè)置DevEco Studio開發(fā)環(huán)境,DevEco Studio開發(fā)環(huán)境需要依賴于網(wǎng)絡(luò)環(huán)境,需要連接上網(wǎng)絡(luò)才能確保工具的正常使用,可以根據(jù)如下兩種情況來配置開發(fā)環(huán)境:

如果可以直接訪問Internet,只需進(jìn)行下載HarmonyOS SDK操作。

如果網(wǎng)絡(luò)不能直接訪問Internet,需要通過代理服務(wù)器才可以訪問,請(qǐng)參考配置開發(fā)環(huán)境

下載源碼后,使用DevEco Studio 打開項(xiàng)目,模擬器運(yùn)行即可。

真機(jī)運(yùn)行需要將config.json中的buddleName修改為自己的,如果沒有請(qǐng)到AGC上進(jìn)行配置,參見 使用模擬器進(jìn)行調(diào)試

3.代碼結(jié)構(gòu)

3.1 代碼結(jié)構(gòu)

HarmonyOS Sample 之 NetworkManagement 網(wǎng)絡(luò)管理功能-鴻蒙HarmonyOS技術(shù)社區(qū)

3.2 相關(guān)文件介紹

核心類:

HttpURLConnection.java //支持 HTTP 特定功能的 URLConnection

URLConnection.java //URL連接

URL.java //指向萬維網(wǎng)上“資源”的指針

NetStatusCallback.java //網(wǎng)絡(luò)狀態(tài)的回調(diào)類,出現(xiàn)可用網(wǎng)絡(luò)觸發(fā)onAvailable函數(shù)

DataFlowStatistics.java //該類提供查詢指定蜂窩網(wǎng)絡(luò)、應(yīng)用和網(wǎng)卡的整體流量統(tǒng)計(jì)和流量統(tǒng)計(jì)的接口。

DatagramSocket.java //此類表示用于發(fā)送和接收數(shù)據(jù)報(bào)包的套接字。

DatagramPacket.java //數(shù)據(jù)報(bào)包

WifiDevice.java //該類提供Wi-Fi管理接口

NetManager.java //提供接口來管理和使用數(shù)據(jù)網(wǎng)絡(luò)。

NetHandle.java // 數(shù)據(jù)網(wǎng)絡(luò)

InetAddress.java //網(wǎng)絡(luò)IP地址

HttpResponseCache.java //該類緩存 HTTP 和 HTTPS 響應(yīng)以供重用

自定義的類:

ThreadPoolUtil.java //線程池工具類

MainAbilitySlice.java //主頁面

NetRequestSlice.java //網(wǎng)絡(luò)請(qǐng)求&流量統(tǒng)計(jì) 功能頁

SocketClientSlice.java //Socket客戶端

SocketServerSlice.java //Socket服務(wù)端

HttpCacheSlice.java //HTTP緩存功能頁

頁面布局:

http_cache_slice.xml //HTTP緩存示例頁

net_request.slice.xml //HTTP請(qǐng)求頁面

socket_client_slice.xml //Socket通信客戶端頁

socket_server_slice.xml //Socket通信服務(wù)端頁

main_ability_slice.xml //主頁面

4.實(shí)例講解

4.1.界面布局

HarmonyOS Sample 之 NetworkManagement 網(wǎng)絡(luò)管理功能-鴻蒙HarmonyOS技術(shù)社區(qū)
HarmonyOS Sample 之 NetworkManagement 網(wǎng)絡(luò)管理功能-鴻蒙HarmonyOS技術(shù)社區(qū)

4.2.后臺(tái)代碼

4.2.1 NetRequestSlice.java 網(wǎng)絡(luò)請(qǐng)求&流量統(tǒng)計(jì) 功能

a.初始化網(wǎng)絡(luò)管理對(duì)象NetManager

  1. //初始化網(wǎng)絡(luò)管理對(duì)象 
  2. netManager = NetManager.getInstance(null); 

b.通過線程池獲取一個(gè)新線程處理進(jìn)行連接請(qǐng)求

獲取默認(rèn)數(shù)據(jù)網(wǎng)絡(luò)的時(shí)候需要ohos.permission.GET_NETWORK_INFO權(quán)限。

  1. //用線程池的取一個(gè)新線程處理 
  2. ThreadPoolUtil.submit(() -> { 
  3.     HiLog.debug(LABEL_LOG, "%{public}s""ThreadPoolUtil submit"); 
  4.     //獲取默認(rèn)的數(shù)據(jù)網(wǎng)絡(luò),wifi和流量都關(guān)閉時(shí),netId==0,其它時(shí) netId=390/391, must have the ohos.permission.GET_NETWORK_INFO permission 
  5.     NetHandle netHandle = netManager.getDefaultNet(); 
  6.     //接收默認(rèn)數(shù)據(jù)網(wǎng)絡(luò)的狀態(tài)更改的回調(diào) 
  7.     netManager.addDefaultNetStatusCallback(callback); 
  8.  
  9.     //netManager.setAppNet(netHandle); 
  10.  
  11.     //支持 HTTP 特定功能的 URLConnection。 
  12.     HttpURLConnection connection = null
  13.     //輸出流 
  14.     try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { 
  15.         //請(qǐng)求的URL 
  16.         String urlString = inputText.getText(); 
  17.  
  18.         URL url = new URL(urlString); 
  19.         //使用 netHandle打開URL連接,不使用代理 
  20.         URLConnection urlConnection = netHandle.openConnection(url, java.net.Proxy.NO_PROXY); 
  21.         HiLog.debug(LABEL_LOG, "%{public}s""netHandle openConnection"); 
  22.         //強(qiáng)轉(zhuǎn)換類型 
  23.         if (urlConnection instanceof HttpURLConnection) { 
  24.             connection = (HttpURLConnection) urlConnection; 
  25.         } 
  26.         //請(qǐng)求類型 
  27.         connection.setRequestMethod("GET"); 
  28.         //連接 
  29.         connection.connect(); 
  30.         //流量統(tǒng)計(jì) 
  31.         trafficDataStatistics(false); 
  32.  
  33.         try (InputStream inputStream = urlConnection.getInputStream()) { 
  34.             byte[] cache = new byte[2 * 1024]; 
  35.             int len = inputStream.read(cache); 
  36.             while (len != -1) { 
  37.                 // 
  38.                 outputStream.write(cache, 0, len); 
  39.                 len = inputStream.read(cache); 
  40.             } 
  41.         } catch (IOException e) { 
  42.             HiLog.error(LABEL_LOG, "%{public}s""netRequest inner IOException"); 
  43.         } 
  44.         //返回結(jié)果 
  45.         String result = new String(outputStream.toByteArray()); 
  46.  
  47.         //UI顯示 
  48.         getUITaskDispatcher().asyncDispatch(() -> outText.setText(result)); 
  49.         //統(tǒng)計(jì)完畢 
  50.         trafficDataStatistics(true); 
  51.  
  52.     } catch (IOException e) { 
  53.         HiLog.error(LABEL_LOG, "%{public}s""netRequest IOException"); 
  54.     } 
  55. }); 

c.按照應(yīng)用ID,進(jìn)行數(shù)據(jù)流量統(tǒng)計(jì)

在發(fā)送請(qǐng)求前獲取一次,在請(qǐng)求完成后獲取一次,

gitee代碼中這個(gè)地方有一處筆誤,tx代表上行流量,rx代表下行流量才對(duì)。詳情見官方文檔說明 流量統(tǒng)計(jì)。

  1. /** 
  2.    * 按照應(yīng)用ID,進(jìn)行數(shù)據(jù)流量統(tǒng)計(jì) 
  3.    * 
  4.    * @param isStart 
  5.    */ 
  6.   private void trafficDataStatistics(boolean isStart) { 
  7.       int uid = 0; 
  8.       try { 
  9.           //根據(jù)給定的包名稱和用戶 ID 獲取應(yīng)用程序 UID。 
  10.           uid = getBundleManager().getUidByBundleName(getBundleName(), 0); 
  11.       } catch (RemoteException e) { 
  12.           HiLog.error(LABEL_LOG, "%{public}s""trafficDataStatistics RemoteException"); 
  13.       } 
  14.       if (isStart) { 
  15.           //獲取指定UID的下行流量。 
  16.           rx = DataFlowStatistics.getUidRxBytes(uid); 
  17.           //獲取指定UID的上行流量。 
  18.           tx = DataFlowStatistics.getUidTxBytes(uid); 
  19.       } else { 
  20.           rx = DataFlowStatistics.getUidRxBytes(uid) - rx; 
  21.           tx = DataFlowStatistics.getUidTxBytes(uid) - tx; 
  22.  
  23.           //設(shè)置UI顯示 
  24.           getUITaskDispatcher().asyncDispatch(() -> statisticsText.setText( 
  25.                   "TrafficDataStatistics:" + System.lineSeparator() 
  26.                           + "Receive traffic:" + rx + System.lineSeparator() 
  27.                           + "Sent traffic:" + tx)); 
  28.       } 
  29.   } 

4.2.2 SocketClientSlice.java/SocketServerSlice.java Socket客戶端/服務(wù)端

實(shí)現(xiàn)Socket通信,是要客戶端和服務(wù)端的,服務(wù)端在指定網(wǎng)卡上監(jiān)聽指定端口,客戶端向指定IP指定端口發(fā)送數(shù)據(jù),實(shí)現(xiàn)通信。

a.Socket服務(wù)端開啟監(jiān)聽,等待接收數(shù)據(jù)

  1. //監(jiān)聽端口 
  2. private static final int PORT = 8888; 
  3.  
  4. /** 
  5.  * 啟動(dòng)socket服務(wù)監(jiān)聽 
  6.  * 
  7.  * @param component 
  8.  */ 
  9. private void startServer(Component component) { 
  10.     HiLog.debug(LABEL_LOG, "startServer"); 
  11.      
  12.     //線程池獲取新線程處理 
  13.     ThreadPoolUtil.submit(() -> { 
  14.         //在指定端口開啟監(jiān)聽 
  15.         try (DatagramSocket socket = new DatagramSocket(PORT)) { 
  16.             //數(shù)據(jù)報(bào)包 
  17.             DatagramPacket packet = new DatagramPacket(new byte[255], 255); 
  18.             //死循環(huán)接收數(shù)據(jù) 
  19.             while (true) { 
  20.                 //接收數(shù)據(jù) 
  21.                 socket.receive(packet); 
  22.                  
  23.                 //通過專有線程同步設(shè)置要顯示接收到的數(shù)據(jù) 
  24.                 getUITaskDispatcher().syncDispatch(() -> outText.setText( 
  25.                         "Receive a message from :" + packet.getAddress().getHostAddress() 
  26.                                 + System.lineSeparator() + " on port " + packet.getPort() 
  27.                                 + System.lineSeparator() + "message :" + new String( 
  28.                                 packet.getData()).substring(0, packet.getLength()) 
  29.                 )); 
  30.                 packet.setLength(255); 
  31.  
  32.                 //延遲一下,留出處理數(shù)據(jù)的時(shí)間 
  33.                 Thread.sleep(1000); 
  34.             } 
  35.         } catch (IOException | InterruptedException e) { 
  36.             e.printStackTrace(); 
  37.             HiLog.error(LABEL_LOG, "%{public}s""StartServer  IOException | InterruptedException" + e); 
  38.         } 
  39.     }); 
  40.  
  41.  
  42. /** 
  43.  * 獲取服務(wù)器端IP地址,顯示給客戶端發(fā)送消息使用 
  44.  * 
  45.  * @return 
  46.  */ 
  47. private String getLocationIpAddress() { 
  48.     HiLog.debug(LABEL_LOG, "getLocationIpAddress"); 
  49.     //提供接口來管理 Wi-Fi。 
  50.     WifiDevice wifiDevice = WifiDevice.getInstance(this); 
  51.     HiLog.debug(LABEL_LOG, "wifiDevice:" + wifiDevice); 
  52.     //WifiLinkedInfo提供有關(guān) Wi-Fi 連接的信息。 
  53.     Optional<WifiLinkedInfo> linkedInfo = wifiDevice.getLinkedInfo(); 
  54.     HiLog.debug(LABEL_LOG, "linkedInfo:" + linkedInfo); 
  55.     //獲取IP地址 
  56.     int ip = linkedInfo.get().getIpAddress(); 
  57.     HiLog.debug(LABEL_LOG, "ip:" + ip); 
  58.     return (ip & 0xFF) + "." + ((ip >> 8) & 0xFF) + "." + ((ip >> 16) & 0xFF) + "." + (ip >> 24 & 0xFF); 

b.Socket客戶端發(fā)送數(shù)據(jù),等待接收數(shù)據(jù)

初始化NetManager對(duì)象->new 一個(gè)DatagramSocket->獲取當(dāng)前數(shù)據(jù)網(wǎng)絡(luò)NetHandle->獲取服務(wù)端的IP地址對(duì)象InetAddress

->將DatagramSocket綁定到NetHandle -> new 一個(gè)數(shù)據(jù)報(bào)包DatagramPacket -> 發(fā)送數(shù)據(jù)

  1. //通信端口 
  2. private static final int PORT = 8888; 
  3.  
  4.  
  5. /** 
  6.  * 發(fā)送網(wǎng)絡(luò)請(qǐng)求 
  7.  * @param component 
  8.  */ 
  9. private void netRequest(Component component) { 
  10.     HiLog.debug(LABEL_LOG, "netRequest"); 
  11.     //啟動(dòng)新線程 
  12.     ThreadPoolUtil.submit(() -> { 
  13.         //初始化網(wǎng)絡(luò)管理對(duì)象 
  14.         NetManager netManager = NetManager.getInstance(null); 
  15.  
  16.         //檢查默認(rèn)數(shù)據(jù)網(wǎng)絡(luò)是否已激活。 
  17.         if (!netManager.hasDefaultNet()) { 
  18.             return
  19.         } 
  20.         //new套接字 
  21.         try (DatagramSocket socket = new DatagramSocket()) { 
  22.             //獲取當(dāng)前數(shù)據(jù)網(wǎng)絡(luò) 
  23.             NetHandle netHandle = netManager.getDefaultNet(); 
  24.  
  25.             //獲取服務(wù)端的IP地址 
  26.             InetAddress address = netHandle.getByName(inputText.getText()); 
  27.             //將套接字綁定到當(dāng)前網(wǎng)絡(luò) 
  28.             netHandle.bindSocket(socket); 
  29.             byte[] buffer = "I'm from Client".getBytes(); 
  30.             //數(shù)據(jù)包 
  31.             DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, PORT); 
  32.             //發(fā)送數(shù)據(jù) 
  33.             socket.send(request); 
  34.             HiLog.debug(LABEL_LOG, "send socket"); 
  35.         } catch (IOException e) { 
  36.             e.printStackTrace(); 
  37.             HiLog.error(LABEL_LOG, "%{public}s""netRequest IOException"+e); 
  38.         } 
  39.     }); 

4.2.3 HttpCacheSlice.java HTTP緩存功能

應(yīng)用重復(fù)打開一個(gè)相同網(wǎng)頁時(shí),可以優(yōu)先從緩存文件里讀取內(nèi)容,從而減少數(shù)據(jù)流量,降低設(shè)備功耗,提升應(yīng)用性能。

問:如何設(shè)置優(yōu)先從緩存文件里讀取內(nèi)容,

答:不用額外設(shè)置,自動(dòng)的 ~~

設(shè)置緩存,需要考慮 緩存位置和緩存大小。

a.初始化緩存 install

  1. /** 
  2.  * 開啟緩存 
  3.  * 開啟后自動(dòng)緩存數(shù)據(jù),不需要手動(dòng)處理 
  4.  */ 
  5. private void initCache(Component component) { 
  6.     //默認(rèn)的緩存目錄 
  7.     File httpCacheDir = new File(this.getCacheDir(), "http"); 
  8.     //緩存大小 
  9.     long httpCacheSize = 10 * 1024 * 1024; 
  10.     try { 
  11.         //配置緩存目錄及最大緩存空間 
  12.         HttpResponseCache.install(httpCacheDir, httpCacheSize); 
  13.         HiLog.debug(LABEL_LOG, "%{public}s""initCache,cache installed[" + httpCacheDir + "]"); 
  14.     } catch (IOException e) { 
  15.         HiLog.error(LABEL_LOG, "%{public}s""initCache IOException"); 
  16.     } 

 b.保存緩存,將緩存寫入文件系統(tǒng) flush

  1. /** 
  2.  * 將緩存寫入文件系統(tǒng),防止緩存丟失 
  3.  */ 
  4. private void flushCache(Component component) { 
  5.     HiLog.debug(LABEL_LOG, "%{public}s""flushCache"); 
  6.     try { 
  7.         //獲取緩存對(duì)象 
  8.         HttpResponseCache cache = HttpResponseCache.getInstalled(); 
  9.         HiLog.debug(LABEL_LOG, "%{public}s""cache:"+cache); 
  10.         if (cache != null) { 
  11.             try { 
  12.                 //將緩存寫入文件系統(tǒng),如果cache is closed 會(huì)報(bào)錯(cuò) //java.lang.IllegalStateException: cache is closed 
  13.                 cache.flush(); 
  14.                 getUITaskDispatcher().syncDispatch(() -> { 
  15.                     //圖片加載時(shí)間,測(cè)試緩存和不緩存的差別 
  16.                     duration.setText("cache flush success"); 
  17.                 }); 
  18.                 HiLog.debug(LABEL_LOG, "%{public}s""cache flush"); 
  19.             } catch (IOException e) { 
  20.                 HiLog.error(LABEL_LOG, "%{public}s""onStop IOException"); 
  21.             } 
  22.         } 
  23.     } catch (IllegalStateException e) { 
  24.         e.printStackTrace(); 
  25.     } 

c.禁用緩存并刪除其中的數(shù)據(jù)delete

  1. /** 
  2.  * 禁用緩存并刪除其中的數(shù)據(jù) 
  3.  */ 
  4. private void deleteCache(Component component) { 
  5.     HiLog.debug(LABEL_LOG, "%{public}s""deleteCache"); 
  6.     //獲取緩存對(duì)象 
  7.     HttpResponseCache cache = HttpResponseCache.getInstalled(); 
  8.     HiLog.debug(LABEL_LOG, "%{public}s""cache:"+cache); 
  9.     if (cache != null) { 
  10.         try { 
  11.             //禁用緩存并刪除其中的數(shù)據(jù)。 
  12.             cache.delete(); 
  13.             image.setPixelMap(null); 
  14.             HiLog.debug(LABEL_LOG, "%{public}s""cache delete"); 
  15.         } catch (IOException e) { 
  16.             HiLog.error(LABEL_LOG, "%{public}s""onStop IOException"); 
  17.         } 
  18.  
  19.     } 
  20.  
  21. /** 
  22.  * 測(cè)試請(qǐng)求 
  23.  * 
  24.  * @param component 
  25.  */ 
  26. private void startRequest(Component component) { 
  27.     HiLog.debug(LABEL_LOG, "%{public}s""startRequest"); 
  28.     ThreadPoolUtil.submit(() -> { 
  29.         try { 
  30.             long startTime=System.currentTimeMillis(); 
  31.             HiLog.debug(LABEL_LOG, "%{public}s""startTime:"+startTime); 
  32.             //請(qǐng)求URL 
  33.             URL url = new URL(inputText.getText()); 
  34.             URLConnection urlConnection = url.openConnection(); 
  35.             HiLog.debug(LABEL_LOG, "%{public}s""openConnection"); 
  36.             //判斷連接類型 
  37.             if (urlConnection instanceof HttpURLConnection) { 
  38.                 HiLog.debug(LABEL_LOG, "%{public}s""urlConnection"); 
  39.                 HttpURLConnection connection = (HttpURLConnection) urlConnection; 
  40.                 HiLog.debug(LABEL_LOG, "%{public}s""connect:"+connection); 
  41.                 //連接 
  42.                 connection.connect(); 
  43.                 HiLog.debug(LABEL_LOG, "%{public}s""connected"); 
  44.                 //連接結(jié)果 
  45.                 if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { 
  46.                     HiLog.debug(LABEL_LOG, "%{public}s""HTTP_OK"); 
  47.                     //描述圖像數(shù)據(jù)源選項(xiàng),例如包括表示為 image/png 的圖像格式。 
  48.                     ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions(); 
  49.                     ImageSource imageSource = ImageSource.create(connection.getInputStream(), srcOpts); 
  50.                     //以像素矩陣的形式提供圖像。 
  51.                     PixelMap pixelMap = imageSource.createPixelmap(null); 
  52.                     HiLog.debug(LABEL_LOG, "%{public}s""pixelMap:"+pixelMap); 
  53.                     //專有線程同步設(shè)置圖片顯示 
  54.                     getUITaskDispatcher().syncDispatch(() -> { 
  55.                         image.setPixelMap(pixelMap); 
  56.                         //圖片加載時(shí)間,測(cè)試緩存和不緩存的差別 
  57.                         duration.setText(String.valueOf(System.currentTimeMillis()-startTime)+" ms"); 
  58.                     }); 
  59.                     HiLog.debug(LABEL_LOG, "%{public}s""setPixelMap"); 
  60.                     HiLog.debug(LABEL_LOG, "%{public}s""endTime:"+ (System.currentTimeMillis()-startTime)); 
  61.                 } 
  62.                 HiLog.debug(LABEL_LOG, "%{public}s""finish"); 
  63.                 //關(guān)閉連接 
  64.                 connection.disconnect(); 
  65.             } 
  66.         } catch (Exception e) { 
  67.             HiLog.error(LABEL_LOG, "%{public}s""initCache Exception"+e); 
  68.             getUITaskDispatcher().syncDispatch(() -> { 
  69.                 //圖片加載時(shí)間,測(cè)試緩存和不緩存的差別 
  70.                 duration.setText("cache is closed, please open cache"); 
  71.             }); 
  72.         } 
  73.     }); 

5.總結(jié)說明

(1)兩種打開網(wǎng)絡(luò)連接的方式

  1. URLConnection urlConnection = url.openConnection(); 
  1. //使用 netHandle打開URL連接,不使用代理 
  2. URLConnection urlConnection = netHandle.openConnection(url, java.net.Proxy.NO_PROXY); 

(2)未開啟緩存情況下,發(fā)送請(qǐng)求的時(shí)長(zhǎng)在400-2000ms之間,開啟后,需要點(diǎn)擊兩次發(fā)送請(qǐng)求,時(shí)長(zhǎng)維持在90-200ms左右。

(3)禁用并清除緩存delete/close后,在沒有再次開啟緩存前,無法發(fā)送請(qǐng)求。這個(gè)操作官方文檔注釋寫的是 “結(jié)束時(shí)關(guān)閉緩存”。

6.完整代碼

附件直接下載

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-09-15 14:55:49

鴻蒙HarmonyOS應(yīng)用

2021-11-02 10:10:49

鴻蒙HarmonyOS應(yīng)用

2021-12-10 15:06:56

鴻蒙HarmonyOS應(yīng)用

2021-09-17 14:43:54

鴻蒙HarmonyOS應(yīng)用

2021-08-17 10:20:14

鴻蒙HarmonyOS應(yīng)用

2021-11-23 09:58:35

鴻蒙HarmonyOS應(yīng)用

2021-09-22 09:42:41

鴻蒙HarmonyOS應(yīng)用

2021-07-08 09:42:04

鴻蒙HarmonyOS應(yīng)用

2021-12-02 10:11:44

鴻蒙HarmonyOS應(yīng)用

2021-11-30 14:51:11

鴻蒙HarmonyOS應(yīng)用

2021-07-29 14:03:35

鴻蒙HarmonyOS應(yīng)用

2022-03-10 14:45:23

HarmonyAPI操作系統(tǒng)

2021-08-24 15:13:06

鴻蒙HarmonyOS應(yīng)用

2011-08-03 10:33:05

網(wǎng)絡(luò)管理網(wǎng)絡(luò)拓?fù)涔芾?/a>

2010-05-24 18:37:31

SNMP協(xié)議

2009-08-04 15:44:01

WLAN無線通信網(wǎng)網(wǎng)絡(luò)管理體系網(wǎng)絡(luò)管理結(jié)構(gòu)

2022-08-25 21:46:51

網(wǎng)絡(luò)通訊應(yīng)用開發(fā)

2023-08-03 00:04:30

風(fēng)險(xiǎn)管理安全治理

2010-08-25 21:20:38

DHCP服務(wù)器

2011-03-29 10:24:58

Cacti監(jiān)測(cè)點(diǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)