从.Net MAUI视图调用本地API时HTTP连接失败

问题描述 投票:0回答:1

从 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-emulator backend maui httpurlconnection refit
1个回答
0
投票

您的问题可能与 Android 设备上的安全设置有关。 在【应用】上添加参数UsesCleartextTraffic = true

MainApplication.cs(在 Platforms/Android 文件夹中)

命名空间 MauiApp1 { [应用程序(UsesCleartextTraffic =true)] 公共类 MainApplication :MauiApplication

© www.soinside.com 2019 - 2024. All rights reserved.