【中秋國慶不斷更】HarmonyOS網路管理開發—HTTP與WebSocket
一、網路管理開發概述
網路管理模組主要提供以下功能:
● HTTP資料請求 :透過HTTP發起一個資料請求。
● WebSocket連線 :使用WebSocket建立伺服器與客戶端的雙向連線。
● Socket連線 :透過Socket進行資料傳輸。
約束與限制
使用網路管理模組的相關功能時,需要請求相應的許可權。
許可權名 |
說明 |
ohos.permission.GET_NETWORK_INFO |
獲取網路連線資訊。 |
ohos.permission.SET_NETWORK_INFO |
修改網路連線狀態。 |
ohos.permission.INTERNET |
允許程式開啟網路套接字,進行網路連線。 |
二、HTTP資料請求
場景介紹
應用透過HTTP發起一個資料請求,支援常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
介面說明
HTTP資料請求功能主要由http模組提供。
使用該功能需要申請ohos.permission.INTERNET許可權。
許可權申請請參考 訪問控制(許可權)開發指導。
涉及的介面如下表,具體的介面說明請參考 API文件。
介面名 |
功能描述 |
createHttp() |
建立一個http請求。 |
request() |
根據URL地址,發起HTTP網路請求。 |
destroy() |
中斷請求任務。 |
on(type: 'headersReceive') |
訂閱HTTP Response Header 事件。 |
off(type: 'headersReceive') |
取消訂閱HTTP Response Header 事件。 |
once('headersReceive') 8+ |
訂閱HTTP Response Header 事件,但是隻觸發一次。 |
request介面開發步驟
1. 從@ohos.net.http.d.ts中匯入http名稱空間。
2. 呼叫createHttp()方法,建立一個HttpRequest物件。
3. 呼叫該物件的on()方法,訂閱http響應頭事件,此介面會比request請求先返回。可以根據業務需要訂閱此訊息。
4. 呼叫該物件的request()方法,傳入http請求的url地址和可選引數,發起網路請求。
5. 按照實際業務需要,解析返回結果。
6. 呼叫該物件的off()方法,取消訂閱http響應頭事件。
7. 當該請求使用完畢時,呼叫destroy()方法主動銷燬。
// 引入包名 import http from '@ohos.net.http'; // 每一個httpRequest對應一個HTTP請求任務,不可複用 let httpRequest = http.createHttp(); // 用於訂閱HTTP響應頭,此介面會比request請求先返回。可以根據業務需要訂閱此訊息 // 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+ httpRequest.on('headersReceive', (header) => { console.info('header: ' + JSON.stringify(header)); }); httpRequest.request( // 填寫HTTP請求的URL地址,可以帶引數也可以不帶引數。URL地址需要開發者自定義。請求的引數可以在extraData中指定 "EXAMPLE_URL", { method: http.RequestMethod.POST, // 可選,預設為http.RequestMethod.GET // 開發者根據自身業務需要新增header欄位 header: { 'Content-Type': 'application/json' }, // 當使用POST請求時此欄位用於傳遞內容 extraData: { "data": "data to send", }, expectDataType: http.HttpDataType.STRING, // 可選,指定返回資料的型別 usingCache: true, // 可選,預設為true priority: 1, // 可選,預設為1 connectTimeout: 60000, // 可選,預設為60000ms readTimeout: 60000, // 可選,預設為60000ms usingProtocol: http.HttpProtocol.HTTP1_1, // 可選,協議型別預設值由系統自動指定 }, (err, data) => { if (!err) { // data.result為HTTP響應內容,可根據業務需要進行解析 console.info('Result:' + JSON.stringify(data.result)); console.info('code:' + JSON.stringify(data.responseCode)); // data.header為HTTP響應頭,可根據業務需要進行解析 console.info('header:' + JSON.stringify(data.header)); console.info('cookies:' + JSON.stringify(data.cookies)); // 8+ } else { console.info('error:' + JSON.stringify(err)); // 取消訂閱HTTP響應頭事件 httpRequest.off('headersReceive'); // 當該請求使用完畢時,呼叫destroy方法主動銷燬 httpRequest.destroy(); } } );
三、WebSocket連線
場景介紹
使用WebSocket建立伺服器與客戶端的雙向連線,需要先透過createWebSocket()方法建立WebSocket物件,然後透過connect()方法連線到伺服器。當連線成功後,客戶端會收到open事件的回撥,之後客戶端就可以透過send()方法與伺服器進行通訊。當伺服器發資訊給客戶端時,客戶端會收到message事件的回撥。當客戶端不要此連線時,可以透過呼叫close()方法主動斷開連線,之後客戶端會收到close事件的回撥。
若在上述任一過程中發生錯誤,客戶端會收到error事件的回撥。
介面說明
WebSocket連線功能主要由webSocket模組提供。使用該功能需要申請ohos.permission.INTERNET許可權。具體介面說明如下表。
介面名 |
功能描述 |
createWebSocket() |
建立一個WebSocket連線。 |
connect() |
根據URL地址,建立一個WebSocket連線。 |
send() |
透過WebSocket連線傳送資料。 |
close() |
關閉WebSocket連線。 |
on(type: 'open') |
訂閱WebSocket的開啟事件。 |
off(type: 'open') |
取消訂閱WebSocket的開啟事件。 |
on(type: 'message') |
訂閱WebSocket的接收到伺服器訊息事件。 |
off(type: 'message') |
取消訂閱WebSocket的接收到伺服器訊息事件。 |
on(type: 'close') |
訂閱WebSocket的關閉事件。 |
off(type: 'close') |
取消訂閱WebSocket的關閉事件 |
on(type: 'error') |
訂閱WebSocket的Error事件。 |
off(type: 'error') |
取消訂閱WebSocket的Error事件。 |
開發步驟
1. 匯入需要的webSocket模組。
2. 建立一個WebSocket連線,返回一個WebSocket物件。
3. (可選)訂閱WebSocket的開啟、訊息接收、關閉、Error事件。
4. 根據URL地址,發起WebSocket連線。
5. 使用完WebSocket連線之後,主動斷開連線。
import webSocket from '@ohos.net.webSocket'; var defaultIpAddress = "ws://"; let ws = webSocket.createWebSocket(); ws.on('open', (err, value) => { console.log("on open, status:" + JSON.stringify(value)); // 當收到on('open')事件時,可以透過send()方法與伺服器進行通訊 ws.send("Hello, server!", (err, value) => { if (!err) { console.log("Message sent successfully"); } else { console.log("Failed to send the message. Err:" + JSON.stringify(err)); } }); }); ws.on('message', (err, value) => { console.log("on message, message:" + value); // 當收到伺服器的`bye`訊息時(此訊息欄位僅為示意,具體欄位需要與伺服器協商),主動斷開連線 if (value === 'bye') { ws.close((err, value) => { if (!err) { console.log("Connection closed successfully"); } else { console.log("Failed to close the connection. Err: " + JSON.stringify(err)); } }); } }); ws.on('close', (err, value) => { console.log("on close, code is " + value.code + ", reason is " + value.reason); }); ws.on('error', (err) => { console.log("on error, error:" + JSON.stringify(err)); }); ws.connect(defaultIpAddress, (err, value) => { if (!err) { console.log("Connected successfully"); } else { console.log("Connection failed. Err:" + JSON.stringify(err)); } });
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009402/viewspace-2986352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【中秋國慶不斷更】HarmonyOS網路管理開發—Socket連線
- 【中秋國慶不斷更】HarmonyOS應用視窗管理(Stage模型)模型
- 【中秋國慶不斷更】OpenHarmony巢狀類物件屬性變化巢狀物件
- 中國銀聯&網聯:2020年中秋國慶處理網路支付交易近10萬億元
- 中秋、國慶上哪兒浪?這條路線人少景美還省錢!
- WebSocket於HTTP 、WebSocket與Socket的區別WebHTTP
- 網聯:2020年中秋國慶假期處理網路支付交易額7.23萬億元 交易133.92億筆
- nestjs搭建HTTP與WebSocket服務JSHTTPWeb
- 網際網路醫療創新深入發展,圓心科技不斷完善全病程管理系統
- HarmonyOS應用開發學習路線
- HarmonyOS 裝置管理開發:USB 服務開發指導
- 專案管理相關網站(不斷更新)專案管理網站
- 網路開發003 小筆記 判斷方法筆記
- 10月6日 新基建專題 | 中秋國慶雙節盛典
- 網路分層TCP/IP 與HTTPTCPHTTP
- [服務端與網路]http協議與http狀態碼服務端HTTP協議
- 網際網路反壟斷成關注焦點 網際網路往前發展反壟斷不存在“既往不咎”
- HarmonyOS NEXT應用開發之Axios獲取解析網路資料iOS
- 2020年1-8日中秋國慶全國接待國內遊客人次
- 網路裝置配置與管理————13、管理Cisco網路
- iOS開發 - Xcode不走斷點iOSXCode斷點
- 10月5日 大資料專題 | 中秋國慶雙節盛典大資料
- Qt - http網路請求與響應QTHTTP
- HarmonyOS 後臺任務管理開發指南上線!
- HarmonyOS UI 開發UI
- 什麼是 WebSocket,它與 HTTP 有何不同?WebHTTP
- 面前最全《崔慶才python3網路爬蟲開發實戰》Python爬蟲
- HTTP與HTTPS:為什麼HTTPS比HTTP更安全?HTTP
- 重慶哪裡有開餐飲費發票-重慶科技網
- win10如何斷網_win10怎麼斷開網路Win10
- 微信支付:2020年中秋國慶消費資料出爐
- 網路連線斷開如何解決 win10系統網路連線經常斷開Win10
- 變更管理與汽車研發應用
- 中國電影票房App:2020年中秋國慶假期檔票房超39億APP
- 研究顯示,網路安全威脅在不斷演變
- 終端斷開,任務不斷
- dotnet core 開發無縫相容Http和Websocket協議的介面服務HTTPWeb協議
- 高德地圖:2020中秋、國慶假期安全暢行指南(附下載)地圖