# 如何解决http报错2300023

#### 问题现象

http执行request报错：2300023 Failed writing received data to disk/application。

*   场景1：使用http下载图片、视频等大文件报错。
*   场景2：封装http单例工具类，并发执行请求报错。
    
    ```
    private httpRequest: http.HttpRequest | null = null;
    // ...
    this.httpRequest = http.createHttp();
    // ...
    // 发送请求
    const response = await this.httpRequest.request(fullUrl, requestOptions);
    ```
    

#### 背景知识

2300023：向磁盘/应用程序写入接收数据失败。

#### 问题定位

按照2300023错误码可能原因，重点从两方面排查：

1.  检查远端服务器资源，判断文件大小是否大于5M，并使用小文件下载测试是否复现问题。
2.  检查是否异常调用destroy销毁导致接收数据不完整。
    *   全局搜索destroy并注释代码，测试请求是否正常。
    *   检查请求实例是否被重新赋值，或复用同一个请求，导致系统自动销毁未完成的请求。使用let newHttp = http.createHttp()创建新的变量及实例发起请求，未复现问题。

#### 分析结论

1.  下载大文件时未定义HttpRequestOptions请求设置中的maxLimit参数，超出默认限制导致下载失败，限制信息可参考request说明。
2.  实现工具类时，HttpRequest实例不可复用。

#### 修改建议

*   对于下载大文件导致的报错，参考http请求传输大于5M文件报错2300023或参考应用文件上传下载使用request.downloadFile下载。
*   不要复用HttpRequest实例，创建一个HttpRequest实例并赋值给一个新的变量执行请求，避免前一个实例请求未接收便被销毁。