Я немного новичок в объективе 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