Xamarin Forms - Salesforce - TLS 1.1 或 TLS 1.2。 POST 错误 API 调用 Android

Xamarin Forms - Salesforce - TLS 1.1 or TLS 1.2. error for POST API call for Android

我们正在尝试从我们的 Xamarin Forms 项目调用 Salesforce restful API。这些调用在 iOS 应用程序方面工作正常但在 Android.

方面失败
HttpClient authClient = new HttpClient();
message = await authClient.PostAsync("url", content); 
string responseString = await message.Content.ReadAsStringAsync();

我们在 Android 的 "responseString" 变量中收到以下响应。

<tr><td width="100%" height="100%"><div class="content">
<h1>**Stronger security is required**</h1><div class="simple">
<p>**To access this website, update your web browser or upgrade your operating system to support TLS 1.1 or TLS 1.2.**</p>
<p>For more information, see 
<a href="https://help.salesforce.com/HTViewSolution?id=000221207&amp;language=en_US" target="_blank">Salesforce disabling TLS 1.0</a>.
</p>
</div></div></td></tr>
</table></body>
</html>

我们需要找到一个应该支持 iOS、Android 和 Win 10 应用程序的解决方案。我们检查了 iOS 并且它起作用了。现在正在检查 Android 并且不工作。对于 Windows 我们不检查。

请帮忙。

我个人 运行 没有深入探讨这个问题,但您可以 ModernHttpClient 试一试。安装该库允许您将 NativeMessageHandler 传递到您的 HttpClient。这将使用 Android 上的本机实现,这将允许使用 Xamarin Forms 实现无法立即使用的额外安全功能。

如果可能,您还应该将 Xamarin Forms 库更新到最新版本。

您的代码将变为(我还添加了一个 using,因为这是一种很好的做法):

using(HttpClient authClient = new HttpClient(new NativeMessageHandler())) {
    message = await authClient.PostAsync("url", content); 
    string responseString = await message.Content.ReadAsStringAsync();
}