HarmonyOS鸿蒙Next中request.uploadFile怎么接收服务器返回的Response(body 和状态码)
HarmonyOS鸿蒙Next中request.uploadFile怎么接收服务器返回的Response(body 和状态码)

await request.uploadFile(context, uploadConfig)
更多关于HarmonyOS鸿蒙Next中request.uploadFile怎么接收服务器返回的Response(body 和状态码)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决方案:订阅 UploadTask 的on(‘headerReceive’)事件。
开发者可通过回调函数获取:
- HTTP 状态码(如 200、404)
- 响应头字段(如 Content-Type、自定义 header)
- 响应体(Body):部分服务端返回的业务数据(如文件路径、错误信息)可能包含在响应体中(需根据 Content-Type解析)。
更多关于HarmonyOS鸿蒙Next中request.uploadFile怎么接收服务器返回的Response(body 和状态码)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
纠正:根据我的验证,并不能获取状态码,如果有人有其他方法获取,可以留言,谢谢,
【背景知识】
[@ohos.request (上传下载)](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-request):request模块给应用提供上传下载文件、后台代理传输的基础功能。
【参考方案】
可参考实现上传和下载功能示例,通过@ohos.request接口创建上传和下载任务,实现上传、下载功能,hfs作为服务器,实现了文件的上传和下载和任务的查询功能。
- 上传模块
- 使用@ohos.request中接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现上传任务的创建、取消、进度加载,失败的任务会调用查询接口获取失败原因并打印在日志中,支持多个文件上传。
- 源码链接:RequestUpload.ets,AddPictures.ets,Upload.ets
- 参考接口:@ohos.request,@ohos.file.picker
 
- 下载模块
- 使用@ohos.request中接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现上传任务的创建、取消、暂停、继续、进度加载,失败的任务会调用查询接口获取失败原因并打印在日志中,前台下载任务只支持单个文件下载,后台下载任务支持多文件下载。使用@ohos.file.fs完成指定路径的创建和查询已下载的文件。
- 源码链接:RequestDownload.ets,Download.ets,FileUtils.ets,FileBrowse.ets
- 参考接口:@ohos.request,@ohos.file.fs
 
try {
    request.uploadFile(context, uploadConfig)
        .then((uploadTask: request.UploadTask) => {
            uploadTask.on('complete', (taskStates: Array<request.TaskState>) => {
                for (let i = 0; i < taskStates.length; i++) {
                    logger.info(TAG, `upload complete taskState: ${JSON.stringify(taskStates[i])}`);
                }
                callback(100, true);
            });
        })
        .catch((err: BusinessError) => {
            logger.error(TAG, `Invoke uploadFile failed, code=${err.code}, message=${err.message}`);
        })
} catch (error) {
    let err: BusinessError = error as BusinessError;
    logger.error(TAG, `Invoke uploadFile failed, code=${err.code}, message=${err.message}`);
}
这个不能收到服务器回复的消息吧?,
在HarmonyOS Next中使用request.uploadFile上传文件时,通过回调函数接收服务器响应。调用uploadFile方法后,在success回调中参数包含服务器返回数据。响应体通过data字段获取,状态码通过code字段获取。示例:success: (data: object) => { let body = data.data; let status = data.code; }。error回调处理请求失败情况,包含错误状态码和信息。
在HarmonyOS Next中,request.uploadFile 方法通过回调函数接收服务器响应。你需要配置 uploadConfig 的 success 回调来获取状态码和响应体。示例代码:
const uploadConfig: request.UploadFileOptions = {
  url: 'your_server_url',
  files: [...],
  success: (response: request.UploadFileResponse) => {
    const statusCode: number = response.code // 获取状态码
    const responseBody: string | object = response.data // 获取响应体
  },
  fail: (error: Error) => {
    console.error('Upload failed:', error)
  }
}
其中 response.data 会根据服务器返回的 Content-Type 自动解析为字符串或对象。注意检查 response.code 处理 HTTP 状态码(如 200 表示成功)。
 
        
       
                   
                   
                  

