You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo应用调用Business Central API遇网络请求失败问题求助

解决Expo调用Business Central API出现Network request failed的问题

排查方向与修复步骤

1. 对齐请求配置与Postman的差异

  • 逐行对比Postman和JS代码的请求头:确保Authorization(Bearer token拼接是否正确)、Accept、Content-Type等必要头信息完全一致,不要遗漏任何Postman里配置的自定义头。
  • 核对请求URL:必须使用完整绝对路径,检查是否存在拼写错误、特殊字符未编码的情况。
  • 确认请求方法:比如Postman用GET,JS代码里不能写成POST。

2. 处理Expo的网络权限与安全限制

  • Android端:检查app.json是否配置了必要网络权限,没有的话添加:
    {
      "expo": {
        "android": {
          "permissions": ["INTERNET", "ACCESS_NETWORK_STATE"]
        }
      }
    }
    
  • iOS端:如果API用的是HTTP而非HTTPS,Expo默认会拦截,可临时在app.json添加配置(上线前务必切换到HTTPS):
    {
      "expo": {
        "ios": {
          "infoPlist": {
            "NSAppTransportSecurity": {
              "NSAllowsArbitraryLoads": true
            }
          }
        }
      }
    }
    

3. 解决证书验证问题

如果Business Central用的是自签名证书,Expo会默认拒绝连接:

  • Android:将证书文件放到android/app/src/main/res/raw目录,然后通过network_security_config.xml配置信任该证书。
  • iOS:把证书添加到项目Info.plist的NSExceptionDomains中,指定信任目标域名。

4. 捕获详细错误日志

修改JS代码,补充完整的错误捕获逻辑,打印更细节的错误信息,方便定位问题:

try {
  const response = await fetch('你的Business Central API完整URL', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer ' + 你的授权Token,
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    }
  });
  const data = await response.json();
  console.log('返回数据:', data);
} catch (error) {
  console.error('请求错误详情:', error);
  console.error('错误代码:', error.code);
  console.error('错误栈:', error.stack);
}

通过日志判断是DNS解析失败、连接超时还是证书校验问题。

5. 检查CORS配置(仅Web预览场景)

如果是在Expo Web端测试,Postman不受CORS限制但浏览器会受影响,需要在Business Central的API服务器上配置CORS规则,允许Expo应用的域名发起请求,同时放行对应的请求方法和头信息。


内容的提问来源于stack exchange,提问作者Jógvan Reinert Samuelsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:45:07