鸿蒙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
- 下载axios
1
2进入项目目录,然后输入下面命令
ohpm install @ohos/axios
- 在oh-package.json5文件当中可以看到所有第三方库依赖
2. 开放网络权限
1 | // 在模块的module.json5文件中配置网络权限 |
使用axios
- 导入axios
1
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格式转换,这里可以直接使用
- 下面是实例
- 无需创建请求对象
评论