HarmonyOS 鸿蒙Next:http文档中,为什么成功不销毁,而异常需要销毁

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:http文档中,为什么成功不销毁,而异常需要销毁

解决措施

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

示例代码

// 引入包名 
import { http } from ‘@kit.NetworkKit’;
import { BusinessError } from ‘@kit.BasicServicesKit’;

// 每一个httpRequest对应一个HTTP请求任务,不可复用 let httpRequest = http.createHttp(); // 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息 httpRequest.on(‘headersReceive’, (header: Object) => { console.info('header: ’ + JSON.stringify(header)); });

class ExtraData { public data: string; constructor(data: string) { this.data = data; } }

class Header { public contentType: string; constructor(contentType: string) { this.contentType = contentType; } }

httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定 “EXAMPLE_URL”, { method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET // 当使用POST请求时此字段用于传递内容 extraData: new ExtraData(‘data to send’), expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型 usingCache: true, // 可选,默认为true priority: 1, // 可选,默认为1 // 开发者根据自身业务需要添加header字段 header: new Header(‘application/json’), readTimeout: 60000, // 可选,默认为60000ms connectTimeout: 60000, // 可选,默认为60000ms usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定 usingProxy: false, // 可选,默认不使用网络代理 caPath: “”, // 可选,默认使用系统预设CA证书 }, (err: BusinessError) => { if (!err) { // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。 httpRequest.destroy(); } else { // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。 httpRequest.destroy(); } });<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

参考链接

http开发指导

14 回复
劳驾问一下,application/json类型下,post发送extraData能成功吗,我这边服务器一直获取不到数据,不知道咋回事儿。

请问有结果了吗?我后面也会使用application/json extraData传普通string

能收到数据,但是是一个json类型的数据。Android okhttp发出去的是一个表单类型的数据。两个数据类型不一样。要不就服务端支持,要不自己想办法统一下。

看看您怎么写的啊。

我反正用完就销毁,也没影响啥啊
finally中统一销毁我这也没啥问题
无论是否异常,都要销毁

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

这个要看官方文档和性能调试吧?

在HarmonyOS鸿蒙Next的http文档中,关于http请求对象在成功时不销毁而在异常时需要销毁的设定,主要基于资源管理和异常处理的考虑。

首先,无论请求成功还是失败,调用destroy方法进行销毁是推荐的做法,因为这样可以及时释放请求对象所占用的资源,避免资源泄露,提升应用性能。成功不销毁可能是因为开发者可能需要在后续重用该请求对象(尽管通常不推荐,因为http请求对象往往设计为不可复用),但如果不明确需要重用,则应始终销毁。

其次,在异常情况下,销毁请求对象尤为重要。异常可能表明请求过程中发生了错误,如网络问题、服务器响应错误等,此时如果不销毁请求对象,可能会导致资源持续占用,甚至引发更严重的问题,如内存泄漏。

因此,无论是成功还是异常,都应考虑销毁http请求对象。如果问题依旧没法解决,请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html ,以便获取更专业的帮助。

回到顶部