有人用过iOS 9 beta 1吗?
我使用标准的NSURLConnection连接到一个webservice,一旦调用到webservice,我就会得到下面的错误。目前在iOS 8.3中运行
可能是测试版bug?任何想法都很好!我知道这是在iOS 9开发的早期
以下是完整的错误:
CFNetwork SSLHandshake失败(-9824)
NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL, -9824)
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://mywebserviceurl"]];
NSURLResponse * response = nil;
NSError * error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
有关详细信息,在iOS 9和OSX 10.11中配置应用程序传输安全例外
奇怪的是,您将注意到连接试图更改
HTTP协议转换为HTTPS,以防止在代码中出现错误
你可能不小心配置错了URL。在某些情况下,这
可能真的有用,但也令人困惑。
这篇带有应用程序传输安全性的应用程序发布包含了一些很好的调试技巧
美国胸科协会失败
大多数ATS故障将显示为CFErrors,代码为-9800
系列。这些在Security/SecureTransport.h头文件中定义
2015-08-23 06:34:42.700 SelfSignedServerATSTest[3792:683731] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
CFNETWORK_DIAGNOSTICS
将环境变量CFNETWORK_DIAGNOSTICS设置为1,以便
在控制台上获取有关故障的更多信息
nscurl
该工具将通过几种不同的ATS组合运行
异常,尝试到每个异常下的给定主机的安全连接
ATS配置并报告结果。
nscurl --ats-diagnostics https://example.com
在经历了两天的尝试和失败后,对我有效的是这个子宫代码
有一个变化,根据这篇文章,我们应该停止使用与那种惯例的NSExceptionDomains字典相关联的子键
NSTemporaryExceptionMinimumTLSVersion
并在新的大会上使用
NSExceptionMinimumTLSVersion
代替。
苹果公司的文档
我的代码
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>YOUR_HOST.COM</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>