import http from '@ohos.net.http';
import promptAction from '@ohos.promptAction';
封裝HTTP接口請(qǐng)求類,提供格式化的響應(yīng)信息輸出功能。
使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本為 api 9 及以上。
示例:
import { MyHttpUtil } from '../common/utils/MyHttpUtil';
async function fetchWeatherData() {
const request = await MyHttpUtil.request('https://api.oioweb.cn/api/weather/GetWeather', 'GET', {}, true);
}
鴻蒙OS開(kāi)發(fā) | 更多內(nèi)容↓點(diǎn)擊 | HarmonyOS與OpenHarmony技術(shù) |
---|---|---|
鴻蒙技術(shù)文檔 | 開(kāi)發(fā)知識(shí)更新庫(kù)gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 在這。 | 或+mau123789學(xué)習(xí),是v喔 |
// 定義日志標(biāo)識(shí)符
private static readonly LOG_TAG: string = "====MyHttpUtil";
/**
* 發(fā)起HTTP請(qǐng)求的方法封裝.
* @param url API 地址,若不包含協(xié)議頭,則自動(dòng)添加當(dāng)前應(yīng)用的主機(jī)域名。
* @param method 請(qǐng)求方法,如 'GET', 'POST' 等。
* @param params 當(dāng)HTTP請(qǐng)求方法為GET、OPTIONS、DELETE、TRACE、CONNECT時(shí),此參數(shù)用于傳遞查詢字符串;對(duì)于POST方法,這些數(shù)據(jù)會(huì)被作為請(qǐng)求體內(nèi)容。
* @param showErrorToast 若為 true,在接口業(yè)務(wù)錯(cuò)誤時(shí),向用戶顯示 toast 提示信息。
* @returns 成功時(shí)返回接口響應(yīng)數(shù)據(jù),請(qǐng)求異常時(shí)返回 undefined。
*/
public static async request(url: string, method: string, extraData: object, showErrorToast: boolean): Promise< any | undefined > {
try {
if (!url) {
return undefined;
}
console.info(`${MyHttpUtil.LOG_TAG}: Request started with URL:`, url);
let request = http.createHttp();
let options = {
method: method, //http.RequestMethod.GET 或 http.RequestMethod.POST
header: {
'Content-Type': 'application/json'
},
readTimeout: 50000, //讀取超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。 設(shè)置為0表示不會(huì)出現(xiàn)超時(shí)情況。
connectTimeout: 50000, //連接超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。
extraData: extraData,
} as http.HttpRequestOptions;
let result = await request.request(url, options);
result = JSON.parse(JSON.stringify(result))
console.info(MyHttpUtil.LOG_TAG, 'request end url:', url); //請(qǐng)求結(jié)束后
console.info(MyHttpUtil.LOG_TAG, 'request method:', method);
console.info(MyHttpUtil.LOG_TAG, 'request extraData:', JSON.stringify(extraData));
// console.info(MyHttpUtil.LOG, 'request result', JSON.stringify(result, null, 2));
console.info(MyHttpUtil.LOG_TAG, 'request result', JSON.stringify(result));
if (result.responseCode == 200) {
console.info(MyHttpUtil.LOG_TAG, 'request code 200 result', result.result.toString());
console.info(MyHttpUtil.LOG_TAG, 'request code 200 result', JSON.stringify(JSON.parse(result.result.toString()), null, 2));
// console.info(MyHttpUtil.LOG, 'request code 200 result', JSON.parse(result.result.toString()));
}
//判斷業(yè)務(wù)異常時(shí),彈出對(duì)應(yīng)的toast
if (showErrorToast) { //TODO 還需要追加自己業(yè)務(wù)的判斷
promptAction.showToast({
message: '這里打印接口業(yè)務(wù)的message錯(cuò)誤信息,根據(jù)自己公司接口業(yè)務(wù)情況封裝。',
duration: 2000,
bottom: '375lpx'
})
}
return result;
} catch (error) {
console.error(MyHttpUtil.LOG_TAG, 'request end url:', url);
console.error(MyHttpUtil.LOG_TAG, 'request method:', method);
console.error(MyHttpUtil.LOG_TAG, 'request extraData:', JSON.stringify(extraData));
console.error(MyHttpUtil.LOG_TAG, 'request', JSON.stringify(error));
} finally {
return undefined
}
}
}
}
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
HarmonyOS
+關(guān)注
關(guān)注
79文章
1975瀏覽量
30194 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3722瀏覽量
16317 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
188瀏覽量
4394
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
鴻蒙原生應(yīng)用開(kāi)發(fā)-網(wǎng)絡(luò)管理HTTP數(shù)據(jù)請(qǐng)求
: \' + JSON.stringify(header));
});
httpRequest.request(
// 填寫(xiě)HTTP請(qǐng)求的URL地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開(kāi)發(fā)者自定義。
發(fā)表于 03-29 17:51
基于STM32封裝的HTTP請(qǐng)求知識(shí)
通過(guò)封裝http頭,向服務(wù)器發(fā)送get請(qǐng)求,通過(guò)get請(qǐng)求上傳數(shù)據(jù),并獲取返回值
發(fā)表于 08-05 06:01
鴻蒙應(yīng)用開(kāi)發(fā)請(qǐng)求不到數(shù)據(jù)是為什么?
鴻蒙應(yīng)用開(kāi)發(fā)請(qǐng)求不到數(shù)據(jù)
發(fā)表于 06-15 11:04
鴻蒙 OS 應(yīng)用開(kāi)發(fā)初體驗(yàn)
的操作系統(tǒng)平臺(tái)和開(kāi)發(fā)框架。HarmonyOS 的目標(biāo)是實(shí)現(xiàn)跨設(shè)備的無(wú)縫協(xié)同和高性能。
DevEco Studio
對(duì)標(biāo) Android Studio,開(kāi)發(fā)鴻蒙 OS 應(yīng)用的 IDE。
發(fā)表于 11-02 19:38
http請(qǐng)求 get post
Http請(qǐng)求類 packagewzh.Http; importjava.io.BufferedReader; importjava.io.IOException
發(fā)表于 09-27 10:36
?16次下載
HTTP請(qǐng)求方式有哪些
相信大家在不管是學(xué)習(xí)、工作或者面試中,肯定會(huì)碰到或被問(wèn)到?HTTP??相關(guān)的知識(shí)。今天我們來(lái)聊聊有哪些?HTTP?請(qǐng)求方式,以及區(qū)別吧! 小伙伴們寫(xiě)過(guò)接口或者使用過(guò)網(wǎng)頁(yè)開(kāi)發(fā)者模式的,肯
HTTP請(qǐng)求報(bào)文:GET和POST的區(qū)別
GET 和 POST 其實(shí)都是 HTTP 的請(qǐng)求方法。除了這 2 個(gè)請(qǐng)求方法之外,HTTP 還有 HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS 這 6 個(gè)
發(fā)表于 04-10 10:11
?2389次閱讀
【EsDA 應(yīng)用】快速實(shí)現(xiàn)串口轉(zhuǎn)HTTP請(qǐng)求
本文將基于EsDA開(kāi)發(fā)套件快速實(shí)現(xiàn)將串口數(shù)據(jù)轉(zhuǎn)換為HTTP請(qǐng)求的應(yīng)用開(kāi)發(fā),實(shí)現(xiàn)串口設(shè)備與網(wǎng)絡(luò)服務(wù)的互聯(lián)互通,提供便捷和高效的串口數(shù)據(jù)轉(zhuǎn)換功能。項(xiàng)目簡(jiǎn)介
鴻蒙OS開(kāi)發(fā)實(shí)例:【工具類封裝-emitter組件間通信】
`MyEmitterUtil` 是一個(gè)針對(duì) HarmonyOS 的事件驅(qū)動(dòng)編程封裝類,主要用于組件間的通信和數(shù)據(jù)傳遞。
鴻蒙OS開(kāi)發(fā)實(shí)例:【工具類封裝-頁(yè)面路由】
import common from '@ohos.app.ability.common';
import router from '@ohos.router'封裝app內(nèi)的頁(yè)面之間跳轉(zhuǎn)、app與app之間的跳轉(zhuǎn)工具
鴻蒙OS開(kāi)發(fā)實(shí)例:【窺探網(wǎng)絡(luò)請(qǐng)求】
HarmonyOS 平臺(tái)中使用網(wǎng)絡(luò)請(qǐng)求,需要引入 "@ohos.net.http", 并且需要在 module.json5 文件中申請(qǐng)網(wǎng)絡(luò)權(quán)限, 即 “ohos.permission.INTERNET”
本篇文章將嘗試使用 @ohos.net.
鴻蒙OS開(kāi)發(fā)實(shí)戰(zhàn):【網(wǎng)絡(luò)管理HTTP數(shù)據(jù)請(qǐng)求】
應(yīng)用通過(guò)HTTP發(fā)起一個(gè)數(shù)據(jù)請(qǐng)求,支持常見(jiàn)的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
鴻蒙OS開(kāi)發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)框架
鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請(qǐng)求方式;還有鴻蒙版retrofit,和Android版Retrofit相
評(píng)論