如何让Android模拟器中的React Native应用访问本地ASP.NET API
解决React Native模拟器访问本地ASP.NET API的问题
先纠正最容易忽略的错误
你输入的API地址http://192.168.084:5000格式错误,正确的本地IP是http://192.168.0.84:5000(多了一个0会导致IP解析失败,这是请求发不出去的直接原因之一)。
方案1:用本地IP访问(无需端口转发)
- 确认ASP.NET API的绑定地址
打开API的Program.cs(或Startup.cs),确保服务绑定到0.0.0.0而不是仅localhost,这样API会监听所有网络接口:var builder = WebApplication.CreateBuilder(args); builder.WebHost.UseUrls("http://0.0.0.0:5000"); // 添加这行 - 检查Windows防火墙
- 打开Windows Defender防火墙 -> 高级设置 -> 入站规则 -> 新建规则
- 选择“端口”,指定TCP端口5000,允许连接,完成规则创建。或者临时关闭防火墙测试(测试后务必重新开启)。
- 修改React Native的API地址
将请求地址改为http://192.168.0.84:5000,重新运行应用测试。
方案2:用ADB端口转发(用localhost访问)
如果习惯用localhost访问,可通过ADB将模拟器的端口映射到电脑的5000端口:
- 打开命令提示符(或PowerShell),执行:
adb reverse tcp:5000 tcp:5000 - 之后React Native里直接用
http://localhost:5000即可访问本地API。 - 注意:每次重启模拟器都需要重新执行该命令,可将其添加到项目的启动脚本中自动执行。
方案3:模拟器代理设置(配合Fiddler抓包或代理场景)
如果需要用Fiddler捕获RN的网络请求,或网络环境需要代理:
- 配置Fiddler允许远程连接
打开Fiddler -> Tools -> Options -> Connections,勾选Allow remote computers to connect,重启Fiddler。 - 设置模拟器代理
打开模拟器的「设置」->「网络与互联网」->「移动网络」->「接入点名称(APN)」:- 新建或编辑现有APN,设置代理为
192.168.0.84,端口为Fiddler的默认端口8888 - 保存后重启模拟器的网络开关,此时RN的请求会走代理,Fiddler可以捕获到。
- 新建或编辑现有APN,设置代理为
方案4:检查React Native的Android配置
- 添加网络权限
确保android/app/src/main/AndroidManifest.xml中包含网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 允许明文HTTP流量
因为Android 9及以上默认禁止明文HTTP请求,若API用的是HTTP,需在application标签中添加:<application ... android:usesCleartextTraffic="true"> - 排查请求代码
在网络请求的错误处理中打印详细日志,比如:
确认是连接超时、DNS解析失败还是其他问题。fetch('http://192.168.0.84:5000/api/xxx') .catch(error => console.log('请求错误:', error))
内容的提问来源于stack exchange,提问作者Alexander Ryan Baggett
相关产品推荐
相关产品推荐

