我尝试使用Alamofire (一个用于联网的Swift库,https://github.com/Alamofire/Alamofire)将HTTP POST发送到服务器,但在执行HTTP POST时收到以下错误:
2015-01-05 19:37:07.137 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.540 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.942 PIPiOS[1021:26574] CFNetwork SSLHandshake failed (-9805) 2015-01-05 19:37:07.943 PIPiOS[1021:26574] NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9805) <NSMutableURLRequest: 0x7f99425177c0> { URL: https://kmis.brookes.ac.uk/csms/w_secure.login } nil Optional(Error Domain=NSURLErrorDomain Code=-1200 "The operation couldn’t be completed. (NSURLErrorDomain error -1200.)" UserInfo=0x7f9944859110 {NSErrorFailingURLStringKey=https://kmis.brookes.ac.uk/csms/w_secure.login, NSErrorFailingURLKey=https://kmis.brookes.ac.uk/csms/w_secure.login, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9805, NSUnderlyingError=0x7f994259f3c0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1200.)"}) 2015-01-05 19:38:25.115 Oxford Brookes[1021:27197] Terminating since there is no system app.
我之前使用的是SwiftHTTP库,并得到了相同的错误。HTTP POST在Java和PHP中工作得很好,所以我知道服务器没有任何问题。你知道为什么会发生这种事吗?
PS:我正在测试以iOS 8.1为目标的iOS模拟器,是的,我已经检查了日期/时间,一切正常
发布于 2015-01-05 23:03:34
服务器的配置已损坏。它不支持常见且最兼容的SSLv23握手,但仅支持显式的TLSv1和SSLv3握手。浏览器通过尝试不同的握手来解决这类问题,但其他应用程序不会这样做。您可以查看一下SSLLabs,看看这个服务器的配置有多糟糕。
我不是苹果开发人员,但从文档中看,我猜您需要使用SSLSetProtocolVersion*函数来执行TLS1.0或SSL3.0连接。
发布于 2015-09-15 21:32:00
尝试避免使用SSL安全策略。签入你的框架API,你会发现一些属性可以做到这一点。正如我在开发AFnetworking时在中所发现的。
manager.securityPolicy.allowInvalidCertificates = YES;希望能有所帮助。
此外,当我得到CFNetwork SSLHandshake失败的时候,你也可以用这种方式正常尝试-(*)这是因为我的本地wifi网络(设备已连接到网络,但没有连接到互联网)
在其他网络上再试一次(3G对我来说是最快的解决方案)
https://stackoverflow.com/questions/27781318
复制相似问题