Swift/https: NSURLSession/NSURLConnection HTTP laden fehlgeschlagen
Leider heute morgen meine XCode-Update auf version 7 und die iOS-app, die ich entwickelt wurde, die mit http-jetzt will https. So, nach vielen tutorials, konfigurierte ich meinen MAMP-server, um die Verwendung von https/ssl Erstellung eines dummy-Zertifikats. Jetzt, in meiner iOS app-URLs sind wie folgt:
static var webServerLoginURL = "https://localhost:443/excogitoweb/mobile/loginM.php"
static var webServerGetUserTasks = "https://localhost:443/excogitoweb/mobile/handleTasks.php"
static var webServerGetUsers = "https://localhost:443/excogitoweb/mobile/handleUsers.php"
static var webServerGetProjects = "https://localhost:443/excogitoweb/mobile/handleProjects.php"
und Sie funktionieren, wenn ich versuche, auf Sie in meinem browser.
Ich wurde verwendet, um den Zugriff auf die Datenbank-und php-Dateien mit NSURLSession.sharedSession().dataTaskWithRequest (), welche nun stellt sich die Fehler im Titel. Zum Beispiel, hier ist die Zeile wo der Fehler ausgelöst wird:
if let responseJSON: [[String: String]] = (try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions())) as? [[String: String]] {
...
}
- und das ist die komplette Fehlermeldung:
2015-09-21 16:41:48.354 ExcogitoWeb[75200:476213] CFNetwork SSLHandshake failed (-9824)
2015-09-21 16:41:48.355 ExcogitoWeb[75200:476213] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
fatal error: unexpectedly found nil while unwrapping an Optional value
Ich würde gerne wissen, wie dieses Problem zu beheben. Ich habe einige nützliche Antworten hier, aber es gibt viele Dinge, die ich noch nicht verstehen und wenn jemand mir helfen/mir erklären ich wäre sehr dankbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie diese, um Ihre app
Info.plist
in der Regel bedeutet, dass Sie etwas tun, das nicht so gut, und suchen Sie in Ihrer
if
Kann ich sehen, dass es eine
data!
, aber das Daten-Objekt ist null. Sie sollten wirklich entfernen Sie die Optionen, bevor Sie Sie verwenden, vor allem beim arbeiten mit remote-Daten.Dann haben Sie eine Netzwerk-Fehler, das ist wahrscheinlich im Zusammenhang mit der
ATS
Apple hat in iOS 9.Siehe andere Antwort, wie vorübergehend deaktivieren der ATS.
https://stackoverflow.com/a/30748166/421755
edit: ich sehe jetzt, dass Sie ssl Hinzugefügt, um Ihre localhost, das ist gut. Aber es ist nicht genug für ATS an die Arbeit, denn es muss TLS 1.2 und nicht-selbst-signierte Zertifikate.
ATS
wenn Sie mit einem lokalen server. Stellen Sie sicher, dass Sie aktivieren Sie es später, wenn Ihr Schiff die app!Open As
Source Code
. imgur.com/eq94tjuWirklich alte Frage, aber ich dachte, dass ich reagieren würde. Dies geschieht normalerweise, wenn Sie versuchen, legen Sie Sie für ein http-Objekt und es kommt wieder null.
Stellen Sie sicher, dass Sie packen Sie Ihre url und geben Sie einen default-Wert.
Beispiel :
hoffe, das hilft!