Objective-C SSL-Synchrone Verbindung

Ich bin ein wenig neu in objective-C, sondern haben über ein problem, das ich nicht lösen kann, vor allem, weil ich nicht sicher bin, ob ich die Umsetzung der Lösung richtig.

Ich versuche, eine Verbindung mit einer Synchronen Verbindung zu einer https-site mit einem selbst signierten Zertifikat. Ich bin immer der

Error Domain=NSURLErrorDomain Code=-1202 "nicht Vertrauenswürdige server-Zertifikat"

Fehler, ich habe einige Lösungen gesehen, um auf diesem forum. Die Lösung, die ich fand, war, hinzufügen:

- (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];  

}

den NSURLDelegate, um alle Zertifikate akzeptieren. Wenn ich eine Verbindung zu der Website mit nur:

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

Funktioniert es einwandfrei und ich sehe die Herausforderung angenommen wird. Aber wenn ich versuche, die Verbindung mit der synchronen Verbindung ich bekomme immer noch den Fehler und ich sehe nicht die Herausforderung-Funktionen aufgerufen wird, wenn ich in der Protokollierung.

Wie bekomme ich die synchron-Verbindung zu verwenden, die Herausforderung von Methoden? Ist es etwas zu tun mit der delegate:self Teil der URLConnection? Ich habe auch die Protokollierung für das senden/empfangen von Daten innerhalb der NSURLDelegate, die aufgerufen wird, durch meine Verbindung Funktion, nicht aber durch den synchronen Funktion.

Was ich benutze für den synchronen Teil:

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"); 

Wie ich bereits erwähnt habe bin ich ein wenig neu zu objective-C also Art 🙂

Vielen Dank für jede Hilfe.
Mike

Hast du am Ende konvertieren Sie Ihre Anfrage an async? Ich bin mit den gleichen Problem und habe Alpträume über meine konvertieren-code.

InformationsquelleAutor Mike | 2010-04-21

Schreibe einen Kommentar