import http from '@ohos.net.http';
import promptAction from '@ohos.promptAction';
封裝HTTP接口請求類,提供格式化的響應信息輸出功能。
使用 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開發 | 更多內容↓點擊 | HarmonyOS與OpenHarmony技術 |
---|---|---|
鴻蒙技術文檔 | 開發知識更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 在這。 | 或+mau123789學習,是v喔 |
// 定義日志標識符
private static readonly LOG_TAG: string = "====MyHttpUtil";
/**
* 發起HTTP請求的方法封裝.
* @param url API 地址,若不包含協議頭,則自動添加當前應用的主機域名。
* @param method 請求方法,如 'GET', 'POST' 等。
* @param params 當HTTP請求方法為GET、OPTIONS、DELETE、TRACE、CONNECT時,此參數用于傳遞查詢字符串;對于POST方法,這些數據會被作為請求體內容。
* @param showErrorToast 若為 true,在接口業務錯誤時,向用戶顯示 toast 提示信息。
* @returns 成功時返回接口響應數據,請求異常時返回 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, //讀取超時時間。單位為毫秒(ms),默認為60000ms。 設置為0表示不會出現超時情況。
connectTimeout: 50000, //連接超時時間。單位為毫秒(ms),默認為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); //請求結束后
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()));
}
//判斷業務異常時,彈出對應的toast
if (showErrorToast) { //TODO 還需要追加自己業務的判斷
promptAction.showToast({
message: '這里打印接口業務的message錯誤信息,根據自己公司接口業務情況封裝。',
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
}
}
}
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
HarmonyOS
+關注
關注
79文章
2053瀏覽量
32132 -
OpenHarmony
+關注
關注
26文章
3830瀏覽量
18145 -
鴻蒙OS
+關注
關注
0文章
191瀏覽量
4879
發布評論請先 登錄
相關推薦
熱點推薦
鴻蒙原生應用開發-網絡管理HTTP數據請求
: \' + JSON.stringify(header));
});
httpRequest.request(
// 填寫HTTP請求的URL地址,可以帶參數也可以不帶參數。URL地址需要開發者自定義。
發表于 03-29 17:51
鴻蒙 OS 應用開發初體驗
的操作系統平臺和開發框架。HarmonyOS 的目標是實現跨設備的無縫協同和高性能。
DevEco Studio
對標 Android Studio,開發鴻蒙 OS 應用的 IDE。
發表于 11-02 19:38
http請求 get post
Http請求類 packagewzh.Http; importjava.io.BufferedReader; importjava.io.IOException
發表于 09-27 10:36
?18次下載
HTTP請求方式有哪些
相信大家在不管是學習、工作或者面試中,肯定會碰到或被問到?HTTP??相關的知識。今天我們來聊聊有哪些?HTTP?請求方式,以及區別吧! 小伙伴們寫過接口或者使用過網頁開發者模式的,肯
鴻蒙OS開發實例:【工具類封裝-emitter組件間通信】
`MyEmitterUtil` 是一個針對 HarmonyOS 的事件驅動編程封裝類,主要用于組件間的通信和數據傳遞。
鴻蒙OS開發實例:【工具類封裝-頁面路由】
import common from '@ohos.app.ability.common';
import router from '@ohos.router'封裝app內的頁面之間跳轉、app與app之間的跳轉工具

鴻蒙OS開發實例:【窺探網絡請求】
HarmonyOS 平臺中使用網絡請求,需要引入 "@ohos.net.http", 并且需要在 module.json5 文件中申請網絡權限, 即 “ohos.permission.INTERNET”
本篇文章將嘗試使用 @ohos.net.

鴻蒙OS開發實例:【HarmonyHttpClient】網絡框架
鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相

評論