在使用app的时候,不可能将所有信息都存储在app中,是需要链接互联网,从服务端获取数据。
请求 响应 应用 服务端
使用HTTP访问网络
HTTP即超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
在ArkTs中我们使用http的流程大致如下:
导入http模块 创建http请求 订阅请求头 发起请求 处理响应
导入http模块
javascript
import http from '@ohos.net.http'
除了导入http模块,还需要中module.json5中添加网络访问权限
javascript
{
"module" : {
"requestPermissions":[
{
"name": "ohos.permission.INTERNET"
}
]
}
}
创建http请求
适应createHttp()创建一个httpRequest对象。
每一个httpRequest对象对应一个http请求任务,不可服用
javascript
import http from '@ohos.net.http';
let httpRequest = http.createHttp();
订阅请求头
用于订阅http响应头,此接口会比request请求先返回,可以根据业务需要订阅此消息
javascript
import http from '@ohos.net.http';
let httpRequest = http.createHttp();
httpRequest.on('headersReceive', (header) => {
console.info('header: ' + JSON.stringify(header));
});
发起请求
通过发起请求,向服务器请求数据
http支持的请求方式
方法 | 说明 |
---|---|
OPTIONS | HTTP 请求 OPTIONS |
GET | HTTP 请求 GET |
HEAD | HTTP 请求 HEAD |
POST | HTTP 请求 POST |
PUT | HTTP 请求 PUT |
DELETE | HTTP 请求 DELETE |
TRACE | HTTP 请求 TRACE |
CONNECT | HTTP 请求 CONNECT |
- get 方法
javascript
let promise = httpRequest.request("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
header: {
'Content-Type': 'application/json'
}
});
- post 方法
javascript
let promise = httpRequest.request("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
extraData:{
// 数据部分
},
header: {
'Content-Type': 'application/json'
}
});
处理响应
javascript
let promise = httpRequest.request("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
extraData:{
// 数据部分
},
header: {
'Content-Type': 'application/json'
}
});
promise.then((res)=>{
})
返回的参数类型是:HttpResponse
HttpResponse 参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
result | string \Object \ArrayBuffer8+ | 是 | Http请求根据响应头中Content-type类型返回对应的响应格式内容:application/json:返回JSON格式的字符串,如需Http响应具体内容,需开发者自行解析;application/octet-stream:ArrayBuffer;其他:string |
responseCode | ResponseCode \number | 是 | 回调函数执行成功时,此字段为ResponseCode。若执行失败,错误码将会从AsyncCallback中的err字段返回。错误码如下:; 200:通用错误; 202:参数错误; 300:I/O错误 |
header | Object | 是 | 发起http请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下:Content-Type:header['Content-Type'];Status-Line:header['Status-Line'];Date:header.Date/header['Date'];Server:header.Server/header['Server']; |
cookies8+ | Array | 是 | 服务器返回的 cookies。 |