1001. HarmonyOS 开发问题:http 文档中,为什么成功不销毁,而异常需要销毁?

1001. HarmonyOS 开发问题:http 文档中,为什么成功不销毁,而异常需要销毁?

问题描述

http 文档中,为什么成功不销毁,而异常需要销毁?

解决方法

http 请求对象,在请求成功或者失败后,都需要调用 destroy 进行销毁,这样可以节省资源消耗。

示例代码

typescript 复制代码
// 引入包名
import http from '@ohos.net.http';

// 每一个httpRequest对应一个HTTP请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
    // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
        // 开发者根据自身业务需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 当使用POST请求时此字段用于传递内容
        extraData: {
            "data": "data to send",
        },
        expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
        usingCache: true, // 可选,默认为true
        priority: 1, // 可选,默认为1
        connectTimeout: 60000, // 可选,默认为60000ms
        readTimeout: 60000, // 可选,默认为60000ms
        usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
    }, (err, data) => {
        if (!err) {
            // data.result为HTTP响应内容,可根据业务需要进行解析
            console.info('Result:' + JSON.stringify(data.result));
            console.info('code:' + JSON.stringify(data.responseCode));
            // data.header为HTTP响应头,可根据业务需要进行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
            // 当该请求使用完毕时,调用destroy方法主动销毁
            httpRequest.destroy();
        } else {
            console.info('error:' + JSON.stringify(err));
            // 取消订阅HTTP响应头事件
            httpRequest.off('headersReceive');
            // 当该请求使用完毕时,调用destroy方法主动销毁
            httpRequest.destroy();
        }
    }
);

参考资料

request 接口开发步骤

  1. @ohos.net.http.d.ts 中导入 http 命名空间。
  2. 调用createHttp()方法,创建一个 HttpRequest 对象。
  3. 调用该对象的 on() 方法,订阅 http 响应头事件,此接口会比 request 请求先返回。
  4. 调用该对象的 request() 方法,传入 http 请求的 url 地址和可选参数,发起网络请求。
  5. 按照实际业务需要,解析返回结果。
  6. 调用该对象的 off() 方法,取消订阅 http 响应头事件。
  7. 当该请求使用完毕时,调用 destroy() 方法主动销毁。
相关推荐
三思而后行,慎承诺1 小时前
tcp 和http 网络知识
网络·tcp/ip·http
JavaEdge.1 小时前
LangChain4j HTTP 客户端定制:解锁 LLM API 交互的更多可能性
网络·网络协议·http
Hy行者勇哥1 小时前
形象解释 HTTP 的四种常见请求方式及其中的区别联系
网络·网络协议·http
Gazer_S3 小时前
【HTTP通信:生活中的邮局之旅】
网络协议·http·生活
layman05285 小时前
node.js 实战——(Http 知识点学习)
http·node.js
Gazer_S6 小时前
【HTTP/2:信息高速公路的革命】
网络·网络协议·http
lLinkl6 小时前
项目笔记2:post请求是什么,还有什么请求
服务器·网络协议·http
__Benco6 小时前
OpenHarmony - 小型系统内核(LiteOS-A)(十),魔法键使用方法,用户态异常信息说明
人工智能·harmonyos
花千树-0108 小时前
使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透
网络协议·http·https
夜空晚星灿烂8 小时前
http通信之axios vs fecth该如何选择?
网络·网络协议·http