HarmonyOS 鸿蒙Next:http文档中,为什么成功不销毁,而异常需要销毁
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>
参考链接
请问有结果了吗?我后面也会使用application/json extraData传普通string
能收到数据,但是是一个json类型的数据。Android okhttp发出去的是一个表单类型的数据。两个数据类型不一样。要不就服务端支持,要不自己想办法统一下。
看看您怎么写的啊。
https://ohpm.openharmony.cn/#/cn/home OpenHarmony三方库中心仓。
找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 ,以便获取更专业的帮助。