鸿蒙HarmonyOS 4-网络连接
http请求数据
- 导入http模块1 import http from '@ohos.net.http' 
- 是用http模块发生请求,处理响应1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19// 2.1 创建一个http的请求对象,不可复用 
 let httpRequest = http.createHttp()
 // 2.2 发生网络请求
 httpRequest.request(
 'http://localhost:3000/users', //请求URL路径
 { //请求选项HttpRequestOptions
 method: http.RequestMethod.GET,
 extraData: {'param1': 'value1'} //k1=v1&k2=v2
 }
 ) //Promise:存放未来会完成的结果
 // 2.3 处理响应结果
 .then((resp: http.HttpRequest) => {
 if(resp.responseCode === 200){
 //请求成功
 }
 })
 .catch((err: Error) => {
 //请求失败
 })
- HttpRequestOptions
| 名称 | 类型 | 描述 | 
|---|---|---|
| method | RequestMethod | 请求方式,GET、POST、PUT、DELETE等 | 
| extraDate | string|Object | 请求参数 | 
| header | Object | 请求头字段 | 
| connectTimeout | number | 连接超时时间,单位毫秒,默认为60000ms | 
| readTimeout | number | 读取超时间,同上 | 
- HttpResponse
| 名称 | 类型 | 描述 | 
|---|---|---|
| responseCode | ResponseCode | 响应状态码 | 
| header | Object | 响应头 | 
| cookies | string | 响应返回的cookies | 
| result | string|Object | 响应体,默认是json字符串 | 
| resultType | HttpDateType | 返回值类型 | 
- 以下是实例

- 封装的方法和类
- 网络请求是有延迟的,所有使用promise异步处理,获取将来的结果
- request返回的是promise,所有整个函数返回的也该是promise
- resolve是成功的通知,reject是失败的通知

- 创建对象并导出,在使用时调入
- 也需要.then来处理结果
- 最后一行的concat的作用是将原来的列表和新获取的进行拼接,实现每次获取都能在后面添加

- 触底继续获取的方法
- 通过isLoading参数将回弹造成的两次触底进行抵消,并且翻页继续获取列表
- 在获取完列表后idLoading被重新设置为false
- isMode参数的作用是检查是否还有数据可以获取
第三方库axios
下载和安装ohpm
- 下载和安装ohpm(open harmony package manager),鸿蒙第三方库的包管理工具
- 下载地址和官方文档
- 下载安装,并按照官方文档进行环境变量的配置
下载和安装axios
- 下载axios1 
 2进入项目目录,然后输入下面命令 
 ohpm install @ohos/axios 
- 在oh-package.json5文件当中可以看到所有第三方库依赖

2. 开放网络权限
| 1 | // 在模块的module.json5文件中配置网络权限 | 
使用axios
- 导入axios1 import axios from '@ohos/axios' 
- 发送请求并处理响应1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18axios.get( //请求方式,不同方式使用不同方法 
 'url', //请求路径
 {
 params: {'param1': 'value1'}, //请求选项
 data: {'param1': 'value1'}
 //请求可选项非常多,可以参考官方文档
 //params是GET请求时的参数,会被放在url后面,data是POST或者PUT等等的请求参数
 }
 )
 .then(response => { //响应结果,AxiosResponse
 if(response.status !== 200){
 console.log('查询失败')
 }
 console.log('查询成功')
 })
 .catch(error => {
 console.log('查询失败', JSON.stringify(error))
 })
| 名称 | 类型 | 描述 | 
|---|---|---|
| status | number | 响应状态码 | 
| headers | Object | 响应头 | 
| data | any | 服务端返回的响应体 | 
- 这里的data不同于http需要把JSON格式转换,这里可以直接使用
- 下面是实例

- 无需创建请求对象
 评论
