У меня есть приложение, которое использует ASIHTTPRequest .
I перекомпилировал мое приложение с iOS 5 (sdk: 5.0 / xcode: 4.2 Build 4D199) и https не удается установить соединение с сообщением об ошибке (тот же вызов с отключенным https работает нормально ):
Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0xa8e66e0 {NSUnderlyingError=0xa8ac6c0 "The operation couldn’t be completed. (OSStatus error -9844.)", NSLocalizedDescription=A connection failure occurred}
С включенным журналом отладки:
[STATUS] Starting asynchronous request <ASIFormDataRequest: 0xd96fc00>
[CONNECTION] Request <ASIFormDataRequest: 0xd96fc00> will not use a persistent connection
[STATUS] Request <ASIFormDataRequest: 0xd96fc00>: Failed
[CONNECTION] Request #(null) failed and will invalidate connection #(null)
Я нашел этот пост:
https://devforums.apple.com/message/537440#537440
что могло бы объяснить мою проблему.
исходя из идеи, что iOS 5 предпочитает TLS 1.2, я пытаюсь изменить параметр kCFStreamSocketSecurityLevelTLSv1 в AIHTTPRequest.m
NSDictionary *sslProperties = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
kCFStreamSSLAllowsExpiredCertificates,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsAnyRoot,
[NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain,
kCFNull,kCFStreamSSLPeerName,
kCFStreamSocketSecurityLevelTLSv1, kCFStreamSSLLevel,// my modif
nil];
безуспешно. Может быть, моя модификация неверна?
подробности:
- Я отключил ARC
- Я использую libz.1.2.5.dylib
- Я обновил ASIHTTPRequest неделю назад.
Я не знаю, является ли проблема историей сертификата (например, версия TLS) или чем-то еще.
любая помощь / идея приветствуется!