我试图通过双向SSL与服务进行通信。
我发现客户端(手表)提供客户端证书后立即取消连接,只需拨打completeHandler(NSURLSessionAuthChallengeUseCredential, credential)
得到的错误是:
NSURLErrorDomain Code = -999已取消
但我尝试在手机上运行相同的代码,但确实成功了。 除此之外,其他要求在手表上工作正常。
由于WatchOS和iOS上的框架不同,我想知道这可能是WatchOS的一个问题吗?或者是否有特别需要为手表配置的东西?
这是代码
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler
{
NSURLProtectionSpace *protectionSpace = [challenge protectionSpace];
NSString *authMethod = [protectionSpace authenticationMethod];
if (authMethod == NSURLAuthenticationMethodServerTrust) {
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:serverTrust]);
} else if (authMethod == NSURLAuthenticationMethodClientCertificate) {
// cancelled immediately after calling the method below.
completionHandler(NSURLSessionAuthChallengeUseCredential, self.credential);
} else {
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
}
}
答案 0 :(得分:3)
Apple工程师确认。 这是Watch OS的限制。目前不支持双向SSL。