我正在研究iOS应用程序,当我尝试访问API服务器上的某些API时,我遇到了间歇性的SSL故障。失败不会一直发生,但它们的发生足以成为一个重大问题。发生SSL故障时,报告的错误代码为errSSLCrypto或“基础加密错误”(-9809)。当应用程序尝试登录时,我主要看到这些问题,但有时在访问其他API时会看到它。
该应用程序是使用ASIHTTPRequest编写的,这是构建登录请求的代码:
ASIFormDataRequest *loginFormDataRequest = [[ASIFormDataRequest alloc] initWithURL:...];
loginFormDataRequest.timeOutSeconds = 30.0f; // Included in an attempt to fix timeout problems
loginFormDataRequest.shouldAttemptPersistentConnection = NO; // Included in an attempt to fix timeout problems
[loginFormDataRequest addPostValue:self.username forKey:@"username"];
[loginFormDataRequest addPostValue:self.password forKey:@"password"];
[loginFormDataRequest addPostValue:@"1" forKey:@"applogin"];
loginFormDataRequest.delegate = self;
[loginFormDataRequest setDidFinishSelector:@selector(didFinishLoginFormDataRequest:)];
[loginFormDataRequest setDidFailSelector:@selector(didFailLoginFormDataRequest:)];
[loginFormDataRequest startAsynchronous];
非常简单。
我已经更新了ASIHTTPRequest以响应Apple的Technical Note TN2287,但这没有帮助。也没有将validatesSecureCertificate
属性设置为NO
。
与服务器的加密连接似乎可以检查出来。 Chrome说:
正在使用https在端口442上联系服务器。我还尝试使用MKNetworkKit实现此登录代码,但我仍然间歇性地看到了SSL错误,因此我认为问题不在于ASIHTTPRequest。
我没有想法,所以我会感激任何人可能有的洞察力。在此先感谢您的帮助!