Dot net MAUI Android 模拟器集成 Web API

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

Sample screenshot

javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

我尝试连接中间件以集成 Web API 和 MAUI,但遇到了参考问题和运行时包丢失问题。

我期待 Web API 与 MAUI android 模拟器连接

android asp.net-web-api maui maui-android
1个回答
0
投票

将以下文件 (network_security_config.xml) 放入 Android 项目的 Resources/xml 目录中。


<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

允许明文流量:通过设置cleartextTrafficPermissed =“true”,您的应用程序可以发出未加密的HTTP请求。虽然对于开发很有用,但建议在生产时切换到 HTTPS 以确保数据安全。

Trust Anchors:带有 的部分表示您的应用程序信任系统预安装的 CA 证书。这并不直接解决信任自签名证书的问题,而是确保来自认可 CA 的证书受到信任。

要在 .NET MAUI Android 应用程序中使用此配置,您需要在 Android 清单文件 (AndroidManifest.xml) 中引用它,如下所示:

<application android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

在C#中实现IHttpHelper接口

IHttpHelper 接口及其实现 HttpHelper 允许您自定义应用程序处理 SSL 证书验证的方式。

public interface IHttpHelper
    {
        HttpClientHandler GetInsecureHandler();
    }

    public class HttpHelper : IHttpHelper
    {
        public HttpClientHandler GetInsecureHandler()
        {
            HttpClientHandler handler = new HttpClientHandler();
            handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
            {
                if (cert.Issuer.Equals("CN=localhost"))
                    return true;
                return errors == System.Net.Security.SslPolicyErrors.None;
            };
            return handler;
        }
    }

用法

var httpHelper = new HttpHelper();
var handler = httpHelper.GetInsecureHandler();
var httpClient = new HttpClient(handler);

另请注意

尝试从 Android 模拟器访问本地开发服务器时使用的正确地址是 10.0.2.2。

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