HarmonyOS 鸿蒙Next http request调用后无任何返回

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

HarmonyOS 鸿蒙Next http request调用后无任何返回

偶发调用http.createHttp().request后,在then中没有任何返回

  1. 代码调用http.createHttp().request,
  2. 服务端显示请求已到且已返回给客户端,但客户端代码始终没有走到then中
  3. 如代码片段中所示,抓取到的系统日志里,既没有response url 这一行的日志,也没有request err这一行的日志
return new Promise((resolve, reject) => {
  httpRequest.request(url, option)
    .then((response) => {
      Logger.debug(TAG, "response url : " + url + ", response : " + JSON.stringify(response));
      if (response.responseCode == http.ResponseCode.OK) {
        resolve(response);
      } else {
        if (response.result != null && (response.responseCode == 401 || response.responseCode == 400)) {
          let body: Record<string, string> = {};
          try {
            body = JSON.parse(response.result as string)

            if (body != null && (body.errCode == "0x9007" || body.errCode == "0x9006")) {
              resolve(this.getNewTicket()
                .then(ticket => {
                  return this.doRequest(ticket, url, requestOption, requestType);
                }))
            } else {
              reject({ code: response.responseCode, data: response, message: body.message });
            }
          } catch (e) {
            Logger.error(TAG, "JSON.parse err : " + e + ", message : " + JSON.stringify(response.result));
            reject({ code: response.responseCode, data: response });
          }
        } else {
          reject({ code: response.responseCode, data: response });
        }
      }
    })
    .catch((err: BusinessError) => {
      this.promptHttpErr(err.code)
      Logger.error(TAG, "request err : " + url + ", message : " + JSON.stringify(err));
      reject({ code: JSON.parse(JSON.stringify(err)).code as number, data: null });
    })
    .finally(() => {
      httpRequest.destroy();
    })
})

更多关于HarmonyOS 鸿蒙Next http request调用后无任何返回的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可能是 request 接口 的用法问题,麻烦看一下 requestInStream 接口能否满足,具体接口开发步骤可参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/http-request-V5#requestinstream

更多关于HarmonyOS 鸿蒙Next http request调用后无任何返回的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对“HarmonyOS 鸿蒙Next http request调用后无任何返回”的问题,以下提供可能的解决方案:

在HarmonyOS系统中进行HTTP请求时,如果调用后无任何返回,可能是由多种原因导致的。首先,检查网络状态是否良好,确保设备已连接到互联网或指定的网络。其次,验证HTTP请求的URL是否正确,以及服务器是否在线并能正常响应请求。

此外,还需检查HTTP请求的方法(如GET、POST等)和请求头信息是否设置正确。错误的请求方法或缺失的请求头可能导致服务器无法正确解析请求,从而不返回任何响应。

同时,确认代码中是否已正确处理HTTP请求的异步性。在HarmonyOS中,HTTP请求通常是异步执行的,需要设置回调函数来接收服务器的响应。如果回调函数未正确设置或存在逻辑错误,也可能导致无法接收到响应。

最后,检查应用的权限设置,确保应用已获取到进行网络请求所需的权限。

如果以上步骤均无法解决问题,可能是由更复杂的网络问题或系统bug导致的。此时,建议直接联系鸿蒙系统的官方客服,提供详细的错误信息和日志,以便他们进行进一步的排查和解决。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部