“недоверяемый сертификат сервера” на iPhone

Я пишу приложение для iPhone, и я хотел бы соединиться с сервером 'HTTPS' для получения некоторой информации. Однако я получаю ошибку в консоли, которая является

NSUnderlyingError = Ошибка =-1202 UserInfo=0x3e95cf0 Кода Domain=kCFErrorDomainCFNetwork "Сертификат для этого сервера недопустим. Вы могли бы соединяться с сервером, который симулирует быть “example.com”, который мог подвергнуть Вашу конфиденциальную информацию опасности".;}

Как я могу доверять сертификату и получить код состояния HTTP 200

Следующее является моим кодом.

    NSMutableURLRequest *request_get2 = [[[NSMutableURLRequest alloc] init] autorelease];
    [request_get2 setURL:[NSURL URLWithString:@"https://www.example.com"]]; 
    [request_get2 setHTTPMethod:@"GET"];
    [request_get2 setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    //[request_get2 setValue:@"text/html; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    [request_get2 setValue:@"https://www.example.com" forHTTPHeaderField:@"Referer"];
    [request_get2 setHTTPShouldHandleCookies:YES];
    // cookiesString is in format "cookieName=cookieValue;"
    [request_get2 setValue: (NSString *) cookiesString forHTTPHeaderField:@"Cookie"];


    // doGet - response
    NSHTTPURLResponse *response_get2 = nil;  // it change from 'NSURLRespaonse' to 'NSHTTPURLResponse'
    NSError *error_get2 = nil;
    NSData *responseData_get2 = [NSURLConnection sendSynchronousRequest:request_get2 returningResponse:&response_get2 error:&error_get2];
    NSString *data_get2 = [[NSString alloc]initWithData:responseData_get2 encoding:NSUTF8StringEncoding];

    if (!error_get2) {
        NSString *responseURL_get2 = [[response_get2 URL] absoluteString];           // null value
        NSString *responseTextEncodingName_get2 = [response_get2 textEncodingName];  // null value
        NSString *responseMIMEType_get2 = [response_get2 MIMEType];                  // null value
        NSUInteger *responseStatusCode_get2 = [response_get2 statusCode]; //[responseStatusCode intValue]; // the status code is 0
    }
    else {
        NSLog(@"\nsomething went wrong: %@\n", [error_get2 userInfo]); // got the error in here
    }
5
задан Michael Celey 2 April 2013 в 17:44
поделиться

1 ответ

Я думаю, что добавить ненадежный сертификат (по крайней мере, в симуляторе) невозможно, но вы можете указать своему делегату NSURLConnection принимать самоподписанные сертификаты (или, как правило, ненадежные)

следующая ссылка помогла мне решить проблему!

Как использовать NSURLConnection для подключения к SSL для получения ненадежного сертификата?

11
ответ дан 13 December 2019 в 19:20
поделиться