iOS 5 : https ( ASIHTTPRequest) aufhören arbeiten
Habe ich eine app, die die Nutzung ASIHTTPRequest.
Ich neu kompiliert meine app mit iOS 5 (sdk : 5.0 /xcode: 4.2 Build 4D199 ) und die https-verbindungen schlagen fehl, mit Fehlermeldung (die gleiche Aufruf mit https deaktiviert, funktioniert einwandfrei):
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}
Mit debug-log aktiviert:
[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)
Fand ich diesen post:
https://devforums.apple.com/message/537440#537440
das könnte erklären, mein problem.
basiert auf der Idee, dass iOS 5 lieber TLS 1.2, versuche ich die Einstellung zu ändern kCFStreamSocketSecurityLevelTLSv1 in 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];
ohne Erfolg. Vielleicht war meine änderung falsch ist?
Details:
- Ich habe das ARC deaktiviert
- Ich benutze libz.1.2.5.dylib
- Ich aktualisiert die ASIHTTPRequest vor einer Woche.
Ich weiß nicht, ob das Problem ist ein Zeugnis der Geschichte (wie TLS-version) oder etwas anderes.
jede Hilfe/Idee ist willkommen !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die endgültige Lösung:
https://developer.apple.com/library/ios/#technotes/tn2287/_index.html#//apple_ref/doc/uid/DTS40011309
Hinzufügen dieser param:
kCFStreamSocketSecurityLevelTLSv1_2
funktioniert auch bei dieser MethodeAuf unsere setup-das problem wurde behoben, durch einfügen von
nur über
in den Griff SSL-Zertifikat-Einstellungen Abschnitt.
EDIT:
Nach http://developer.apple.com/library/ios/#technotes/tn2287/_index.html#//apple_ref/doc/uid/DTS40011309 sollte Folgendes robuster
sieht wie ASIHTTPRequest ist, verlassen zu werden.
und die aktuelle version hat Problem mit iOS 5.
http://groups.google.com/group/asihttprequest/browse_thread/thread/7731197dbe71c260
Sie empfehlen bewegen zu NSURLConnection.
Diese sind die Dinge, die ich versuchen würde:
Für was es Wert ist, ich habe ASIHTTPRequest auf iOS5 funktioniert Prima mit meinen Kunden https-Server - ich habe nicht zu änderungen für iOS5.
Versuchen Sie es mit kCFStreamSocketSecurityLevelSSLv3 anstatt TLSv1. Das hat für mich, wenn ich lief in einer ähnlichen situation. Ich bin mir nicht sicher, warum die auto-negotiation nicht wieder zurück zu fallen, um das richtige Protokoll, aber zumindest auf einigen Servern scheint es zu scheitern, unter ASIHttpRequest wo es funktionieren würde mit NSURLConnection.