Kla*_*hen 6 ssl httpclient xamarin.android xamarin
我有一个Xamarin Forms项目,在 MainPage.xaml.cs 文件中我想向我的服务器执行请求。服务器是用ASP.NET Core 2 编写的,并使用自签名证书运行。
购买证书并不能解决我的问题,因为客户不希望它和应用程序只在局域网中运行。
在我的 MainPage.xaml.cs 文件中,Http 请求如下所示:
HttpClient m_Client = new HttpClient();
var uri = new Uri(myURL);
var response = await m_Client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
...
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。如果我在Android上运行应用程序并尝试执行请求,Android 会抛出 SSL 异常,因为找不到我的证书的 CA。
如何使用自签名证书与我的服务器通信?
我查了一下问题并找到了很多解决方案,例如:
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)
如果您将此代码添加到 Android 项目中的 MainActivity.cs 文件中,它应该接受所有证书。但这对我不起作用。似乎这个方法永远不会被调用。
对于如何进行沟通有什么建议吗?
问候
一种选择是处理证书,这已在上面的评论中讨论过。
但是,我认为忽略代码中的证书验证的选项总是更快,而您只需要这个,
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
HttpClient client = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud)
由于某些未知的原因,您无法使用ServicePointManager.ServerCertificateValidationCallback您发现的全局事件处理程序,但HttpClient有自己的处理程序。
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |