在日常开发应用当中,应用内部有很多数据并不是保存在应用内部,而是在服务端。所以就需要向服务端发起请求,由服务端返回数据。这种请求方式就是 Http 请求。
一、申请网络权限
在 module.json5
文件中,添加网络权限:
{
"module": {
...
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"usedScene": {
"when": "always"
}
}
]
}
}
二、导入 http 模块
import http from '@ohos.net.http';
三、使用 http 模块发送请求,处理响应
创建一个 http 的请求对象
let httpRequest = http.createHttp()
createHttp()
方法创建的对象是不可复用的,也就是说利用它创建的对象发请求,发一次就不能再发请求了,只能发一次,下次再发还得创建一个新的 request 对象。发起网络请求
httpRequest.request( 'https://www.wutianhao.com', { method: http.RequestMethod.GET, extraData: { 'param1': 'value1' } } )
request() 方法接收两大参数:
- url:请求的 URL 路径
- options:请求选项 HttpRequestOptions
HttpRequestOptions 支持的字段:
名称 类型 描述 method RequestMethod 请求方式,GET、POST、PUT、DELETE 等 extraData string 或 Object 请求参数 header Object 请求头字段 connectTimeout number 连接超时时间,单位 ms,默认是 60000 ms readTimeout number 读取超时时间,单位 ms,默认是 60000 ms 处理响应结果
.then((resp: http.HttpResponse) => { if (resp.responseCode === 200) { // 请求成功 } }) .catch((err: Error) => { // 请求失败 })
整个请求是通过异步事件处理的,凡是这种异步任务都会返回一个
Promise
结果。Promise
顾名思义就是许诺,它里面存放的是未来会完成的结果。给Promise
添加成功和失败的函数,将来,如果这个异步事件处理完,就会返回相应的回调。Promise
提供了两个方法:- then():添加成功回调函数,当异步事件处理成功时,会调用这个函数。
- catch():添加失败回调函数,当异步事件处理失败时,会调用这个函数。
异步任务发的是 Http 请求,因此,如果成功得到的自然就是 Http 的响应结果,也就是
HttpResponse
。不过需要注意这个 response 并不是咱们想要的那个直接的数据,这里采用 Http 协议,所以它返回的是一种通用的 Http 响应结果。HttpResponse 支持的字段:
名称 类型 描述 responseCode ResponseCode 响应状态码 header Object 响应头 cookies string 响应返回的 cookies result string或Object 响应体,默认是 JSON 字符串 resultType HttpDataType 返回值类型