Я немного новичок в objective-C, но столкнулся с проблемой, которую я не могу решить, главным образом потому, что я не уверен, что правильно реализую решение.
Я пытаюсь подключиться с помощью синхронного подключения к сайту https с самозаверяющим сертификатом. Я получаю
Ошибка домена = NSURLErrorDomain Code = -1202 "сертификат ненадежного сервера"
Ошибка, что я видел некоторые решения на этом форуме. Решение, которое я нашел, заключалось в том, чтобы добавить:
- (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];
}
в NSURLDelegate принять все сертификаты. Когда я подключаюсь к сайту, используя только:
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://examplesite.com/"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
Он отлично работает, и я вижу, что вызов принимается. Однако, когда я пытаюсь подключиться с помощью синхронного соединения, я все равно получаю ошибку, и я не вижу вызывающих функций, вызываемых при вводе в журнал.
Как я могу получить синхронное соединение для использования методов вызова? Это как-то связано с делегатом: самостоятельная часть URLConnection? У меня также есть регистрация для отправки/получения данных в NSURLDelegate, которая вызвана моей функцией соединения, но не синхронной функцией.
Что я использую для синхронной части:
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");
Как я уже говорил, я немного новичок в объективе C, поэтому будьте добры:)
Спасибо за любую помощь. Mike