从 Android 模拟器的 .NET MAUI 应用程序调用本地托管的 API 时,我收到一条错误消息,指出 HTTP 连接失败。
我能够通过 Android 模拟器上的 google chrome 成功向本地 API 发送请求,但是当尝试在应用程序中访问相同的 URL 时,我收到连接失败错误。
我使用“http://10.0.2.2:5223”作为我的 HTTP 客户端的基本 URL,并且我还使用 Refit 在 .NET MAUI 应用程序中创建 RestService。
是否可以在 .NET MAUI ContentPage 中创建 HTTP 客户端,然后使用它从 API 检索数据?我的团队正在使用 C# 标记作为视图,因此我认为创建客户端并从 C# 标记视图调用我们的 API 会很简单。
我已附上我在其中创建客户端并尝试 API 调用的视图的代码,
internal class MainPage : ContentPage
{
private int _selectedTabIndex { get; set; } = 1;
private IAPIClient _client { get; set; }
public MainPage()
{
_client = RestService.For<IAPIClient>("http://10.0.2.2:5223");
new Action(async () => await LoadData())();
Build();
#if DEBUG
HotReloadService.UpdateApplicationEvent += ReloadUI;
#endif
}
async Task LoadData()
{
var user = await _client.GetUser();
}
...
}
以及 Refit 客户端的代码
public interface IAPIClient
{
[Get("/User")]
Task<UserModel> GetUser();
}
我真的很困惑为什么我无法建立与 API 的连接,并且觉得我误解了有关 .NET MAUI 的一些基础知识。我需要一个 ViewModel 来促进这个过程吗?如果是这样,为什么?
非常感谢这里的一些反馈/指导,谢谢!
您的问题可能与 Android 设备上的安全设置有关。 在【应用】上添加参数UsesCleartextTraffic = true
MainApplication.cs(在 Platforms/Android 文件夹中)
命名空间 MauiApp1 { [应用程序(UsesCleartextTraffic =true)] 公共类 MainApplication :MauiApplication