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

React Native(Expo iOS)调用.NET Core 7 API报Network request failed错误

Expo iOS React Native 调用.NET Core 7 API 报 Network request failed 问题解决

问题描述

开发了基于Expo的iOS端React Native应用,后端采用.NET Core 7 API。使用fetch或axios发送POST请求时,始终返回TypeError: Network request failed。尝试用局域网IP替换localhost后问题依旧,但API在Postman和Swagger中可正常响应。

请求代码:

fetch("https://localhost:7199/api/Auth/SendVerificationMessage", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
        phoneNumber: "+40000000000",
        verificationCode: 0,
    }),
})
.then((response) => {
    console.log("yay" + response.status);
})
.catch((error) => {
    console.log("meh " + error);
});

已修改Info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

解决方案

  • 处理HTTPS证书信任问题
    本地.NET Core生成的自签名证书默认不被iOS信任,这是核心问题之一:

    • 临时切换HTTP调试:修改.NET Core项目的launchSettings.json,启用HTTP端口(通常为5xxx开头),将请求地址替换为http://你的局域网IP:端口/api/...
    • 安装证书到iOS设备:导出本地HTTPS证书,通过邮件/隔空投送发送到iOS设备并安装,之后在「设置-通用-关于本机-证书信任设置」中启用该证书
  • 确保网络连通性

    • iOS设备(模拟器/真机)必须和后端服务器处于同一局域网
    • 用设备自带浏览器访问http://你的局域网IP:端口/swagger,确认能正常打开,排除防火墙拦截或端口未开放问题
    • 禁止使用localhost:Expo模拟器中的localhost指向模拟器自身,必须替换为电脑的局域网IP(如192.168.1.100)
  • Expo环境下ATS配置生效方式
    直接修改Info.plist在Expo托管项目中不会生效,需在app.json或app.config.js中配置:

    {
      "expo": {
        "ios": {
          "infoPlist": {
            "NSAppTransportSecurity": {
              "NSAllowsArbitraryLoads": true
            }
          }
        }
      }
    }
    

    修改后重启Expo服务,重新构建iOS项目

  • 抓包排查请求细节
    使用Charles抓包工具查看请求是否真正发出,以及具体的错误信息(iOS模拟器需配置代理指向Charles)

内容的提问来源于stack exchange,提问作者dragosh46

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:10