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
您好,感谢您的提问题,大概梳理一下您的问题,看下理解是否准确:
同一套代码,在有特殊网络的情况下,请求国内apiA,postman和HarmonyOS真机都能成功;请求国外apiB,postman可以请求成功,HarmonyOS真机失败,异常原因为timeout。
还有,您所说的特殊网络是指什么?
更多关于HarmonyOS鸿蒙Next RCP在有特殊网络的情况下依旧timeout(已补全提问信息)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您好,为了更快速解决您的问题,并且吸引更多用户一同参与您问题的解答与讨论,建议您补全如下信息:
补全问题现象(如:报错日志、异常截图、问题背景),让参与用户更清晰了解您的问题;
补全复现代码(如最小复现demo),让参与用户更快速复现您的问题;
更多提问技巧,请参考:《提问小技巧:让解答更高效》
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
https+域名+证书,缺一不可
我试用了其他api测试(国内的)能请求到,只是需要特殊网络的无法创建连接,
鸿蒙Next RCP在特殊网络下出现timeout可能由以下原因导致:
- 网络代理或防火墙拦截了RPC通信;
- 特殊网络的DNS解析异常;
- 鸿蒙分布式软总线未适配特定网络协议;
- 设备网络权限配置未覆盖特殊网络场景。
需检查网络环境是否允许224.0.0.0~224.0.0.255组播通信,这是鸿蒙分布式通信的基础。可尝试在相同网络环境下用hdc命令测试设备间ping通情况。
从日志分析来看,这是一个典型的网络连接超时问题。关键点在于:
- 错误码1007900028表示连接超时
- 日志显示TCP连接阶段失败(tcpConnE:115)
- DNS解析已成功(dnsDur:2.08ms)
- 超时发生在连接阶段(connectMs:5000)
建议检查以下几点:
- 确保设备/模拟器的特殊网络配置正确,可能需要手动配置代理
- 尝试增加connectMs超时时间(如15000ms)
- 检查是否需要在代码中显式配置网络代理
- 确认特殊网络在设备/模拟器上实际可用(可尝试用设备浏览器访问目标API测试)
可以尝试在SessionConfiguration中添加网络代理配置:
requestConfiguration: {
proxy: {
host: "your.proxy.host",
port: yourProxyPort
}
}