鸿蒙网络请求

鸿蒙系统不断进化,适配的库也越来越丰富,其中网络请求是应用的一大需求。


Axios 是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中,包括:
  http 请求
  Promise API
  request 和 response 拦截器
  转换 request 和 response 的 data 数据
  自动转换 JSON data 数据

已经有同学针对鸿蒙进行了适配并封装了库ohos_axios,地址是:OpenHarmony-SIG/ohos_axios (gitee.com)

这里使用ohos_axios通过一个实际玩安卓项目的开发进行学习。
代码地址: carlshen/WanHarmony: Wanandroid For HarmonyOS (github.com)
必须感谢鸿洋大佬及其相关作者。

提到网络请求,就要处理异步及回调的逻辑。比如:promise和async/await区别
1 promise是es6的语法,async await是es7的新特性
2 Promise。是一种应用层的解决方案,它提供了一种方式来处理异步操作的结果,具有三种状态:pending(进行中)、resolved(已完成)和rejected(已失败)。
  它允许开发者通过链式调用.then()方法来处理异步操作的结果,但这种方式可能导致回调地狱的问题,并且调试不方便。
3 async/await。是语言层的解决方案,它允许开发者像编写同步代码一样编写异步代码。async函数内部可以使用await等待异步操作的结果,这样可以避免回调地狱的问题。
  async/await更加优雅简洁,代码看起来像同步代码一样,不需要像使用Promise那样调用.then()来获取返回结果,并且方便进行断点调试。


Axios的拦截器是它的一大特色,在请求或响应被 then 或 catch 处理前拦截它们,也方便进行调试监控。

// 添加请求拦截器
axios.interceptors.request.use((config:InternalAxiosRequestConfig) => {
  // 对请求数据做点什么
  return config;
}, (error:AxiosError) => {
  // 对请求错误做些什么
  return Promise.reject(error);
});


// 添加响应拦截器
axios.interceptors.response.use((response:AxiosResponse)=> {
  // 对响应数据做点什么
  return response;
}, (error:AxiosError)=> {
  // 对响应错误做点什么
  return Promise.reject(error);
});
 

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸿蒙系统中的网络请求API,通常指的是HarmonyOS提供的HTTP或HTTPS请求相关的接口,用于应用程序与远程服务器进行数据交互。在HarmonyOS中,你可以使用`HMS Networking`(华为移动服务网络模块)或内置的`URLSession`等类似的网络请求库。 **HMS Networking**: - `HMSSDK.HttpClient`:这是华为云推送服务的一部分,提供了一个方便的方式来发起HTTP请求,支持GET、POST、PUT等方法,并提供了处理响应和错误的方法。 - `HMS.HttpRequest`:这是更底层的接口,允许自定义请求头和设置超时等参数。 **内置URLSession**: - `URLSessionDataTask`:如果你的应用程序不需要依赖华为服务,可以使用iOS和macOS的标准网络请求工具,比如创建一个URLSession实例,然后通过DataTask发起网络请求。 **使用示例**: ```java // 使用HMS Networking import com.huawei.hms.network.HttpRequest; HttpRequest request = new HttpRequest(); request.setMethod(HttpMethod.GET); request.setUri("https://api.example.com/data"); request.addHeader("Authorization", "Bearer " + accessToken); HttpResponse response = request.sendSync(); // 处理响应... // 或者使用URLSession URL url = new URL("https://api.example.com/data"); NSMutableURLRequest requestObj = [NSMutableURLRequest requestWithURL:url]; requestObj.HTTPMethod = @"GET"; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:requestObj completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 处理数据... }]; [dataTask resume]; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值