首页 > 解决方案 > Xamarin IOS - HttpClient - API 在一台 iPad 而不是另一台上工作

问题描述

我正在使用“ https://www .******pi.********^$%.org.uk”,它在一个 iPAD 上工作,而在另一个 iPAD 上不工作。我有相同的配置设备(软件和硬件)。我连接到同一个网络。

API 调用已使用 HttpClient 类完成。它在 Android 中运行良好。

此 API 调用适用于某些 iPad,但不适用于具有相同操作系统和配置的某些 iPad。任何结论都是 iOS 设备上的随机行为。

我正在研究 Xamarin Native 并尝试了以下解决方案但没有成功 -

https://medium.com/outsystems-engineering/installing-a-valid-certificate-on-a-dev-server-433e499260fe

使用 NSURLSession (swift2,xcode7,ios9) 连接到具有无效证书的服务器

使用 Httpclient 信任自签名证书

System.Net.ServicePointManager.ServerCertificateValidationCallback = 委托 { 返回真;};

以下是我得到的问题 -

{System.Net.WebException:此服务器的证书无效。您可能正在连接到伪装成“**&^& ^& %^”的服务器。(&^ (&^ ^&.org.uk”,这可能会使您的机密信息面临风险。---> Foundation.NSErrorException:抛出了“Foundation.NSErrorException”类型的异常。--- 内部异常堆栈跟踪结束 --- 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS 中的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] /mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 在 /Library/Frameworks/Xamarin 中的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task 任务)[0x00037] .iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 在 System.Runtime.CompilerServices.TaskAwaiter。

任何帮助表示赞赏。

标签: iossslxamarincertificate

解决方案


“此服务器的证书无效。” 您必须在服务器上安装受信任的证书。

另一种选择是将其放入 AppDelegate 中: System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

它将有效地忽略证书验证过程(但不建议用于生产!)


推荐阅读