HarmonyOS onInterceptRequest设置WebResourceResponse不生效?

.onInterceptRequest((event)=>{
  if (!event) {
    return;
  }
  // 此处匹配自己想要加载的本地离线资源,进行资源拦截替换,绕过跨域
  Logger.warn(TAG, `getRequestUrl:${event.request.getRequestUrl()}`)
  if (this.schemeMap.has(event.request.getRequestUrl())) {
    let rawfileName: string = this.schemeMap.get(event.request.getRequestUrl())!;
    let mimeType = this.mimeTypeMap.get(rawfileName);
    if (typeof mimeType === 'string') {
      let response = new WebResourceResponse();
      // 构造响应数据,如果本地文件在rawfile下,可以通过如下方式设置
      response.setResponseData($rawfile(rawfileName));
      response.setResponseEncoding('utf-8');
      response.setResponseMimeType(mimeType);
      response.setResponseCode(200);
      response.setReasonMessage('OK');
      response.setResponseIsReady(true);
      response.setResponseHeader(event.request.getRequestHeader())
      Logger.warn(TAG, `getRequestUrl  ==>  rawfileName:${rawfileName}   ResponseData:${response.getResponseData()}  ReasonMessage:${response.getReasonMessage()}  ResponseMimeType:${response.getResponseMimeType()}`)
      return response;
    }
  }
  return null
})

日志打印为:

08-26 16:51:13.090   30028-30028  A03D00/JSAPP   xxx  I     [INFO ] 2024-08-26 16:51:13,090 [Logger:97] [["[WebView]","getRequestUrl  ==>  rawfileName:uni/xxx.uni.carList/package.json   ResponseData:  ReasonMessage:OK  ResponseMimeType:text/plain"]]

前端请求到的resonse为空,实际应该是个文件。

阅读 604
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进