HarmonyOS鸿蒙Next RCP在有特殊网络的情况下依旧timeout(已补全提问信息)

HarmonyOS鸿蒙Next RCP在有特殊网络的情况下依旧timeout(已补全提问信息)

我需要请求一个国外的api,该api需要使用特殊网络才能返回数据,我在电脑上用postman测试成功,但是在鸿蒙开发上(模拟器以及真机)出现timeout,切换一个国内的api能请求到数据,只有国外的timeout(已具备特殊网络环境)

这里是权限请求代码

"requestPermissions": [
  {
    "name": "ohos.permission.GET_NETWORK_INFO"
  },
  {
    "name": "ohos.permission.INTERNET"
  },
  {
    "name": "ohos.permission.SET_NETWORK_INFO"
  }
],
import { rcp } from '@kit.RemoteCommunicationKit';

const sessionConfig: rcp.SessionConfiguration = {
  requestConfiguration: {
    transfer: {
      autoRedirect: true,
      timeout: {
        connectMs: 5000,
        transferMs: 10000
      }
    },
    tracing: {
      verbose: true
    }
  },
  baseAddress: "此处内容已删除",
  headers: {
    "Authorization": "Bearer  (此处内容已删除)",
    "Content-Type": "application/json"
  },
  sessionListener: {
    onCanceled: () => console.info("Session was cancelled"),
    onClosed: () => console.info("Session was closed")
  }
};
const session = rcp.createSession(sessionConfig);
@Entry
@Component
struct Index {
  // 获取电影数据的异步方法
  private async fetchMovieData() {
    console.info("Starting request...");

    try {
      console.info("Starting 111...");

      const response = await session.get('此处内容已删除');

      // 打印响应详情
      console.info(`Response code: ${response}`);
      console.info(`Response data: ${JSON.stringify(response)}`);

    } catch(err) {
      // 完整错误输出
      console.error(`FULL ERROR: ${JSON.stringify(err)}`);
      console.error(`Code: ${err.code}, Message: ${err.message}`);
    }
  }
  build() {
    Column(){
      Button('获取数据')
        .fontColor(Color.Black)
        .onClick(this.fetchMovieData)
    }
    .height('100%')
  }
}

这里是日志

06-20 20:40:40.744 48676-48676 A03D00/com.ora…reelist/JSAPP com.orange.reelist E FULL ERROR: {“code”:1007900028,“data”:“Timeout was reached”,“extendInfo”:{“httpPhase”:“110000”,“dnsDur”:“2.08”,“tcpDur”:“0.00”,“tlsDur”:“0.00”,“sndDur”:“0.00”,“rcvDur”:“0.00”,“totDur”:“5003.47”,“redDur”:“0.00”,“osErr”:“110”,“sptIP6”:“1”,“proxyType”:“none”,“updateProxy”:“0”,“sock”:“95”,“tcpConnE”:“115”,“tryConnV4”:“1”,“tryConnV6”:“1”,“dlSpeed”:“0”,“ulSpeed”:“0”,“dlSz”:“0”,“ulSz”:“0”,“reused”:“false”,“sockType”:“IpConnection”,“connectMs”:“5000”,“transferMs”:“10000”,“reqLen”:“no header sent”,“respLen”:“no header recv”,“lastSslRecvSz”:“0”,“lastSslSendSz”:“0”,“totalSslRecvSz”:“0”,“totalSslSendSz”:“0”,“lastEpollAct”:“0”,“headerOutSz”:“0”,“headerInSz”:“0”}}


更多关于HarmonyOS鸿蒙Next RCP在有特殊网络的情况下依旧timeout(已补全提问信息)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

您好,感谢您的提问题,大概梳理一下您的问题,看下理解是否准确:

同一套代码,在有特殊网络的情况下,请求国内apiA,postman和HarmonyOS真机都能成功;请求国外apiB,postman可以请求成功,HarmonyOS真机失败,异常原因为timeout。

还有,您所说的特殊网络是指什么?

更多关于HarmonyOS鸿蒙Next RCP在有特殊网络的情况下依旧timeout(已补全提问信息)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你的理解没有问题,我说的特殊网络指的是vpn(用来访问国外api),

您好,为了更快速解决您的问题,并且吸引更多用户一同参与您问题的解答与讨论,建议您补全如下信息:

补全问题现象(如:报错日志、异常截图、问题背景),让参与用户更清晰了解您的问题;

补全复现代码(如最小复现demo),让参与用户更快速复现您的问题;

更多提问技巧,请参考:《提问小技巧:让解答更高效》

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

https+域名+证书,缺一不可

我试用了其他api测试(国内的)能请求到,只是需要特殊网络的无法创建连接,

鸿蒙Next RCP在特殊网络下出现timeout可能由以下原因导致:

  1. 网络代理或防火墙拦截了RPC通信;
  2. 特殊网络的DNS解析异常;
  3. 鸿蒙分布式软总线未适配特定网络协议;
  4. 设备网络权限配置未覆盖特殊网络场景。

需检查网络环境是否允许224.0.0.0~224.0.0.255组播通信,这是鸿蒙分布式通信的基础。可尝试在相同网络环境下用hdc命令测试设备间ping通情况。

从日志分析来看,这是一个典型的网络连接超时问题。关键点在于:

  1. 错误码1007900028表示连接超时
  2. 日志显示TCP连接阶段失败(tcpConnE:115)
  3. DNS解析已成功(dnsDur:2.08ms)
  4. 超时发生在连接阶段(connectMs:5000)

建议检查以下几点:

  1. 确保设备/模拟器的特殊网络配置正确,可能需要手动配置代理
  2. 尝试增加connectMs超时时间(如15000ms)
  3. 检查是否需要在代码中显式配置网络代理
  4. 确认特殊网络在设备/模拟器上实际可用(可尝试用设备浏览器访问目标API测试)

可以尝试在SessionConfiguration中添加网络代理配置:

requestConfiguration: {
  proxy: {
    host: "your.proxy.host",
    port: yourProxyPort
  }
}
回到顶部