Objective-C SSL Connexion Synchrone

Je suis un peu nouveau pour objective-C, mais avez exécuté sur un problème que je ne peux pas résoudre, surtout parce que je ne suis pas sûr que je suis la mise en œuvre de la solution correctement.

Je suis en train d'essayer de vous connecter en utilisant une Connexion Synchrone à un site en https avec un certificat auto-signé. Je suis le

Erreur de Domaine=NSURLErrorDomain Code=-1202 "non fiables certificat de serveur"

Erreur que j'ai vu des solutions à certains sur ce forum. La solution que j'ai trouvé a été d'ajouter:

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];  
}  

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
    [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];  

}

à la NSURLDelegate à accepter tous les certificats. Lorsque je me connecte sur le site en utilisant seulement:

NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://examplesite.com/"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];  
    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

Il fonctionne très bien et je vois le défi d'être accepté. Cependant lorsque j'essaie de me connecter en utilisant la connexion synchrone j'ai toujours l'erreur et je ne vois pas le défi a pour fonction appelée lorsque je l'ai mis dans l'exploitation forestière.

Comment puis-je obtenir la connexion synchrone à utiliser le défi méthodes? Est-il quelque chose à faire avec le délégué:auto partie de la URLConnection? J'ai également la journalisation pour l'envoi/la réception de données à l'intérieur de la NSURLDelegate qui est appelé par ma fonction de connexion, mais pas par la fonction synchrone.

Ce que je suis à l'aide de la machine synchrone partie:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:@"https://examplesite.com/"]];  
        [request setHTTPMethod: @"POST"];  
        [request setHTTPBody: [[NSString stringWithString:@"username=mike"] dataUsingEncoding: NSUTF8StringEncoding]];  
        dataReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];  
        NSLog(@"%@", error);  
        stringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding];  
        NSLog(@"%@", stringReply);  
        [stringReply release];  
        NSLog(@"Done"); 

Comme je l'ai mentionné, je suis un peu nouveau pour objectif C alors soyez gentils 🙂

Merci pour toute aide.
Mike

Avez-vous finissent par se convertir à votre demande en asynchrone? Je suis en cours d'exécution dans la même question et je suis des cauchemars au sujet de convertir mon code.

OriginalL'auteur Mike | 2010-04-21