【问题标题】:Xamarin Forms: The SSL connection could not be establishedXamarin Forms:无法建立 SSL 连接
【发布时间】:2022-01-24 22:27:39
【问题描述】:

我在 Xamarin Forms 上遇到 SSL 连接问题。它最初工作正常,但现在它给出了例外。相同的 API 在另一个项目中运行良好。

    var siteIdResponse = await client.GetAsync(API CALL);

我的 Xamarin.Forms 版本是 4.5.0282

我的项目类型是便携式。

System.Net.Http.HttpRequestException:无法建立 SSL 连接 System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。 ---> Mono.Btls.MonoBtlsException:Ssl 错误:1000007d:SSL 例程:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/boringssl/ssl/handshake_client.c:1132

作为参考,我创建了一个示例项目并上传了here

【问题讨论】:

  • "CERTIFICATE_VERIFY_FAILED" - 您是否测试过服务器的证书以查看它是否有效?
  • @Jason 相同的 API 调用正在另一个项目(.net)上工作,仅在这个项目(便携式)上,我们面临这个问题。
  • 它在一个完全不同的平台上工作,可能会对 HTTPS 连接实施不同的限制。您仍然需要检查服务器的证书。
  • @Jason 我已经创建了一个示例项目,并在问题中添加了它的详细信息,您可以看看吗?

标签: xamarin.forms


【解决方案1】:

我做了一个dependenceService来获取HttpClientHandler。

首先。创建一个接口。

public interface IMyOwnNetService
{
    HttpClientHandler GetHttpClientHandler();
}

然后在android中实现这个接口。

[assembly: Dependency(typeof(MyOwnNetService))]
namespace Business_App.Droid
{
    internal class MyOwnNetService : IMyOwnNetService
    {
        public HttpClientHandler GetHttpClientHandler()
        {
            return new Xamarin.Android.Net.AndroidClientHandler();
        }
    }
}

iOS

[assembly: Dependency(typeof(MyOwnNetService))]
public class MyOwnNetService: IMyOwnNetService {
    public HttpClientHandler GetHttpClientHandler() {
        return new HttpClientHandler();
    }
}

最后,像下面的代码一样使用HttpClient。

var hc = new HttpClient(Xamarin.Forms.DependencyService.Get<IMyOwnNetService>().GetHttpClientHandler());
var siteIdResponse = await hc.GetAsync(API CALL);
            

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多