NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
Très, très frustrant! Je me suis tiré les cheveux pendant des heures avec ça. J'utilise un certificat auto-signé sur mon serveur Linode. Le port est 8000, n'a pas pu le faire fonctionner sur 443. Je ne crois pas que ce soit la raison cependant. Voici mon code, il est 99% boilerplate:iOS demandes HTTPS 101
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.myserver.com:8000/test.json"]];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
Au fond:
#pragma mark NSURLConnectionDelegate
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
NSLog(@"protectionSpace: %@", [protectionSpace authenticationMethod]);
// We only know how to handle NTLM authentication.
if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodNTLM])
return YES;
// Explicitly reject ServerTrust. This is occasionally sent by IIS.
if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust])
return NO;
return NO;
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
[[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"%@", response);
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"%@", data);
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"didFailWithError");
NSLog([NSString stringWithFormat:@"Connection failed: %@", [error description]]);
}
AIDE OMG!
MISE À JOUR
Il a collaboré avec cette méthode de délégué. Je reçois la réponse, mais il y a un problème. Les mots "user" et "password" que j'ai fournis sont complètement aléatoires et ne sont pas vérifiés par le serveur. Comment puis-je vérifier les informations d'identification avant d'accepter la connexion sur mon serveur?
EDIT: Je suis en cours d'exécution d'un serveur Node.js
« Le « utilisateur » et « mot de passe » que j'ai fourni sont complètement aléatoires et ne sont pas vérifiées par le serveur » - c'est une autre question. Vous devriez le poser comme une question distincte et peut-être revenir à cette question. La configuration de Linode peut être hors sujet, vous devrez peut-être passer à Super User ou Server Fault. (Et vous devriez probablement accepter la réponse de Fonix puisqu'elle semble vous avoir aidé à résoudre le problème). – jww