NSURLSession/NSURLConnection HTTP laden fehlgeschlagen (kCFStreamErrorDomainSSL, -9802 in iOS10, 2017

DIES IST KEINE WIEDERHOLTE FRAGE, LESEN SIE WEITER. Ich bin Modernisierung des veralteten code in meine app zu iOS10 compliance.

DEN FEHLER:
NSURLSession ist, gebe mir Mühe, mit diesem berüchtigten Fehler, zusammen mit 9806 und 9801, je nach dem, was ich auf dem .plist-Datei:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

MEIN CODE:
In meiner Info.plist-Datei, die ich habe:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>https://my.own-server.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowInsecureHTTPSLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSThirdPartyExceptionAllowInsecureHTTPSLoads</key>
                <false/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSRequiresCertificateTransparency</key>
                <false/>
            </dict>
        </dict>
        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <false/>
        </dict>
    </dict>

In meinem ObjectiveC-code, ich habe dieses:

NSURLSessionConfiguration *defaultConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session __unused = [NSURLSession sessionWithConfiguration:defaultConfiguration delegate:[PortalRequest alloc] delegateQueue:[NSOperationQueue mainQueue]]; operationQueue:[NSOperationQueue mainQueue]];
    requestContainer.sessionDataTask = [session dataTaskWithRequest:request];
[self.sessionDataTask resume];

In der DELEGATE-Methode der Klasse machen, wo die URLSession nennen, ich kann sehen, didReceiveChallenge:

LOG: ** NSURLSession IOS10 ** - didReceiveChallenge called

...und endlich bekomme ich die Fehlermeldung:

[TIMESTAMP] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806)

DEM SERVER
Keine der vorgeschlagenen Lösungen in anderen Antworten arbeiten, ist es wegen des Apple-2017 Frist?
https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/
Nach diesem online-Sicherheits-Analyse-tool, https://www.ssllabs.com/ssltest/analyze.html
Das backend unterstützt TLS 1.2

Irgendwelche Ideen auf, wie man dieses Problem lösen??
Wissen Sie, wo finden Sie einige iOS-sample-code zu 100% sicher, dass der endpoint ich hindeute, ist frei von Schuld?

UPDATE
Dieser code funktioniert für mich, irgendwelche Meinungen?:

- (void)URLSession:(NSURLSession *)session
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
 completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * __nullable credential))completionHandler{
    NSLog(@"*** KBRequest.NSURLSessionDelegate - didReceiveChallenge IOS10");

    if([challenge.protectionSpace.authenticationMethod
        isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        if([challenge.protectionSpace.host
            isEqualToString:@"engine.hello-indigo.com"])
        {
            NSURLCredential *credential =
            [NSURLCredential credentialForTrust:
             challenge.protectionSpace.serverTrust];
            completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
        }
        else
            completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
    }
}
Wenn Sie die Umsetzung Ihrer eigenen auth Herausforderung, Umgang, meine erste Vermutung wäre ein Fehler. Können Sie nach dem Inhalt, der Methode?
Wie u Ihr problem lösen? bacause ich habe http-audio-stream und NSURLConnection beendet mit Fehler - code -1002
Ich löste es, Blick auf das Update auf meine Frage. Es funktioniert, und niemand schlägt vor, eine bessere Idee, so werde ich halte es für gut. Über Ihren code 1002 Fehler, überprüfen Sie, dass Sie bei der Verwendung von https in der URL - stackoverflow.com/questions/26647423/...
Oh mein Freund, den ich verwenden den audio-stream, und wie ich bin, verstehe audio-stream nicht über https...es stimmt oder nicht? wie u denken?
klingt kompliziert, aber Sie sind das senden dieser audio-stream zu einem server-Adresse richtig? Diese Adresse muss mit http oder https.

InformationsquelleAutor Josh | 2017-01-25

Schreibe einen Kommentar