HarmonyOS应用如何访问和使用网络资源?
HarmonyOS应用访问和使用网络资源的方式主要依赖于HTTP数据请求功能,该功能主要由http模块提供。以下是具体步骤:
在进行网络请求前,需要在module.json5
文件中声明网络访问权限,添加如下代码:
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
在需要使用网络请求的Ability或模块中,导入http模块:
import http from '@ohos.net.http';
使用createHttp()
方法创建一个httpRequest对象,该对象包含了常用的网络请求方法,如request
、destroy
、on('headerReceive')
等:
let httpRequest = http.createHttp();
需要注意的是,每一个httpRequest对象对应一个http请求任务,不可复用。
http模块支持常用的GET、POST等方法,封装在RequestMethod
中。调用request
方法发起网络请求,需要传入两个参数:请求的url地址和可选参数(类型为HttpRequestOptions
,用于定义请求方式、连接超时时间、请求头字段等)。
let url = "https://EXAMPLE_URL?param1=v1¶m2=v2";
let promise = httpRequest.request(
url,
{
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
header: {
'Content-Type': 'application/json'
}
}
);
extraData
里面。let url = "https://EXAMPLE_URL";
let promise = httpRequest.request(
url,
{
method: http.RequestMethod.POST,
extraData: {
"param1": "value1",
"param2": "value2"
},
connectTimeout: 60000,
readTimeout: 60000,
header: {
'Content-Type': 'application/json'
}
}
);
使用.then()
和.catch()
方法处理响应结果和异常:
promise.then((data) => {
if (data.responseCode === http.ResponseCode.OK) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
}
}).catch((err) => {
console.info('error:' + JSON.stringify(err));
});
其中,data.responseCode
为HTTP请求返回的状态码,如果状态码为http.ResponseCode.OK
(即200),则表示请求成功。data.result
为服务器返回的业务数据,开发者可以根据自身业务场景解析此数据。
可以使用.on('headersReceive')
方法订阅HTTP响应头,该方法会在请求头接收完毕后触发,返回响应头信息。
httpRequest.on('headersReceive', (header) => {
console.info('header: ' + JSON.stringify(header));
});
通过以上步骤,HarmonyOS应用就可以成功访问和使用网络资源了。
1 回答500 阅读✓ 已解决
1 回答512 阅读
1 回答445 阅读
422 阅读
387 阅读
1 回答331 阅读
推荐参阅(网络服务)主要提供以下功能:
HTTP数据请求:通过HTTP发起一个数据请求。
WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。
Socket连接:通过Socket进行数据传输。
网络连接管理:网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。
MDNS管理:MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、移除、发现、解析等能力。