【发布时间】:2018-08-22 06:18:50
【问题描述】:
我正在使用“https://www.******pi.********^$%.org.uk”,它在一个 iPAD 上工作,而在另一个 iPAD 上不工作。我有相同的配置设备(软件和硬件)。我连接到同一个网络。
API 调用已使用 HttpClient 类完成。它在 Android 中运行良好。
此 API 调用适用于某些 iPad,但不适用于具有相同操作系统和配置的某些 iPad。这是 iOS 设备上的随机行为,无法得出任何结论。
我正在开发 Xamarin Native 并尝试了以下解决方案但没有成功 -
Connect to a Server with Invalid Certificate using NSURLSession (swift2,xcode7,ios9)
Trust a self signed certificate using Httpclient
System.Net.ServicePointManager.ServerCertificateValidationCallback = 委托{返回真; };
以下是我遇到的问题 -
{System.Net.WebException:此服务器的证书无效。 您可能正在连接到假装的服务器 “**&^&^&%^.(&^(&^^&.org.uk”) 有风险的信息。 ---> Foundation.NSErrorException:异常 类型“Foundation.NSErrorException”被抛出。 --- 内部结束 异常堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task 任务) [0x00037] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task 任务) [0x00028] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task 任务) [0x00008] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/11.12.0.4/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535 在 System.Net.Http.NSUrlSessionHandler+d__29.MoveNext () [0x001c3] 在 /Users/builder/data/lanes/5944/64fece5f/source/xamarin-macios/src/Foundation/NSUrlSessionHandler.cs:202
感谢任何帮助。
【问题讨论】:
-
所有设备都使用相同的iOS版本吗?另外,我会将您正在使用的代码添加到您的问题中(即使用带有 Xamarin 的 NSUrlSessionHandler 的自定义 NSUrlSession,或者......)您是否直接使用
NSUrlSession而不是 HttpClient 来排除 Xamarin 作为问题?最后,避免一起使用自签名证书是要走的路……SSL证书是免费提供的……;-) -
检查 iPad 上的日期和时间。如果时钟过于倾斜,那么 TLS 协商将失败
-
@Sushi 我试过使用 NURLSession 但它不起作用。
-
@Paulw11 我已经检查过了。没错
标签: ios ssl xamarin certificate