Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求
Posted
技术标签:
【中文标题】Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求【英文标题】:Flutter physical iOS device unable to make api request to my local asp.net server 【发布时间】:2022-01-24 04:18:28 【问题描述】:当我从物理 ios 设备调试我的应用程序并尝试向我的本地服务器发出请求时,我收到了这个在 iOS 模拟器上没有出现的错误:
SocketException (SocketException: OS Error: Connection denied, errno = 61,地址 = 192.168.1.186,端口 = 56740)
该端口应该是我的服务器端口吗?那是 5001。
我可以在 dart 开发工具调试器中看到发送了这个请求:
GET https://192.168.1.186:5001/fashionitems/search?searchTerm=Fa¤tPage=1&pageSize=10
这是正确的 URL,并且适用于 iOS 模拟器,因此看起来它正在发送正确的请求。
我正在使用 asp.NET 6 作为服务器。
我觉得问题出在我的服务器上,因为 google maps API 请求是在物理设备上运行的。当 asp.NET 6 应用程序在模拟器上运行而不是在物理设备上运行时,我会查看它的哪个部分?
我可以通过什么来解决这个问题?
编辑:在 Flutter 中,我看到如果在物理设备上进行测试,我们应该使用 ip 地址而不是“localhost”。所以我就这么做了。有趣的是,IP 地址不适用于 iOS 模拟器,只有 'localhost' 可以。我不认为应该是这种情况。
Wifi 是 starlink,虽然我认为这不会有什么不同。我无法使用移动数据热点进行测试。
服务器连接字符串是:
"ConnectionStrings":
"DefaultConnection": "Server=localhost;Port=5432;Database=vepo_dev_db;User Id=postgres;Password=password;Include Error Detail=true"
,
在 asp.net 应用程序上:
launchSettings.json
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings":
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress":
"applicationUrl": "http://localhost:53210",
"sslPort": 44301
,
"profiles":
"IIS Express":
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables":
"ASPNETCORE_ENVIRONMENT": "Development"
,
"Vepo":
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"launchUrl": "GroceryItems",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables":
"ASPNETCORE_ENVIRONMENT": "Development"
【问题讨论】:
你的物理设备和.Net服务器是否通过wifi在同一个网络上? @Dev 他们都连接到同一个WIFI网络。我的笔记本 ipv4 是 192.168.1.186,我的 iPhone ipv4 是 192.169.1.118。 我认为有一些问题 192.168.1.186 和 192.169.1.118 是不同的网络系列。禁用 sim 数据并再次验证。尝试从笔记本电脑ping 192.169.1.118,看看它是否可以ping iphone @Dev 我打错了。 iPhone 是 192.168.1.118。道歉 检查防火墙是否阻止端口 5001。它很可能只是网络问题。 【参考方案1】:改变
"applicationUrl": "https://localhost:5001;http://localhost:5000",
到
"applicationUrl": "https://0.0.0.0:5001;http://localhost:5000",
【讨论】:
太好了,它正在工作!非常感谢! 欢迎兄弟。乐于助人。以上是关于Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求的主要内容,如果未能解决你的问题,请参考以下文章
向我的项目添加风味后,我无法初始化 Flutter for web
Flutter Geolocator 无法在 Android 上运行,但可以在 iOS 上完美运行
Flutter 应用程序无法在真实的 iOS 设备上运行(白屏)
Flutter iOS 物理设备错误:Command PhaseScriptExecution failed with a nonzero exit code