Swift/https: NSURLSession/NSURLConnection HTTP échec de chargement de la
Malheureusement, ce matin, mon XCode mis à jour en version 7 et l'application iOS j'étais en développement avec http souhaite désormais https. Donc, suite à de nombreux tutoriels, j'ai configuré mon serveur MAMP pour utiliser le protocole https/ssl création d'un certificat factice. Maintenant, dans mon application iOS Url sont comme suit:
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"
et ils fonctionnent très bien si je tente d'y accéder dans mon navigateur.
J'ai été utilisé pour accéder à la base de données et les fichiers php avec NSURLSession.sharedSession().dataTaskWithRequest() qui soulève maintenant l'erreur dans le titre. Par exemple, voici la ligne où l'erreur s'est produite:
if let responseJSON: [[String: String]] = (try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions())) as? [[String: String]] {
...
}
et c'est le message d'erreur:
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
Je voudrais savoir comment résoudre ce problème. J'ai lu quelques réponses utiles ici, mais il y a beaucoup de choses que je ne comprends toujours pas et si quelqu'un veut aider/m'expliquer je lui en serais très reconnaissant.
OriginalL'auteur SagittariusA | 2015-09-21
Vous devez vous connecter pour publier un commentaire.
Ajouter à votre application
Info.plist
il regarde donc en danger
OriginalL'auteur mychar
signifie généralement que vous êtes en train de faire quelque chose de pas très bon, et en regardant votre
if
Je peux voir qu'il y a un
data!
, mais que l'objet de données est nul. Vous devriez vraiment déballer les options avant de les utiliser, surtout lorsque l'on travaille avec des données à distance.Alors vous avez une erreur de réseau, qui est sans doute lié à la
ATS
Apple a ajouté à iOS 9.Voir une autre réponse sur la façon de temporairement désactiver l'ATS.
https://stackoverflow.com/a/30748166/421755
edit: je vois maintenant que vous avez ajouté ssl pour votre localhost, c'est bon. Cependant, il ne suffit pas que l'ATS de travail, car il a besoin de TLS 1.2 et pas des certificats auto-signés.
J'ai juste modifié la réponse en même temps vous avez dit. Je pense que c'est plus facile de simplement désactiver
ATS
lors de l'utilisation d'un serveur local. Assurez-vous d'activer plus tard quand vous expédiez l'application!Je viens de lire que le protocole TLS 1.2 sera disponible avec OSX El Capitan...je l'espère vraiment. Je suis le développement de cette application iOS pour un examen et je ne voudrais pas ressembler à un inexpérimenté gars de mon professeur...je vous remercie pour votre healp
Pas de soucis, bonne chance avec votre examen!
désolé pour le déranger..voulez-vous me dire comment faire pour modifier des fichiers plist? Parce que je ne la vois pas avec xml syntas...
OriginalL'auteur Simon
Vraiment vieille question, mais je pensais que j'allais répondre. Cela se produit généralement lorsque vous essayez de déballer un http objet et il est nul.
Assurez-vous que vous déballer vos url et de lui donner une valeur par défaut.
exemple :
espérons que cette aide!
OriginalL'auteur BitBeast