iOS 5 NSURLCподключение к HTTPS-серверам - PullRequest
5 голосов
/ 03 февраля 2012

Я искал часы относительно NSURLConnection делегатов / методов, которые я могу использовать для подключения к любым серверам HTTPS. Даже я искал на этом сайте, и я нашел ответы, ответы, которые не работают для меня.

Я буду загружать ссылку на код, если кто-то из вас захочет, чтобы я. Но я бы предпочел учебник / примеры кодов / исходный код простого UIWebView подключения к любому HTTPS Servers. И я возьму это оттуда.

Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 03 февраля 2012

Независимо от того, подключаетесь ли вы к HTTPS или HTTP-сайту, они должны быть полностью прозрачными как для NSURLConnection, так и для элементов управления UIWebView.Единственное, что вам может понадобиться - если сертификат сайтов сервера является самозаверяющим или не поддающимся проверке сертификатом, добавьте код, чтобы обойти проверку подлинности, которую получает браузер.(т. е. эквивалент сообщения о том, что сертификат подписан неизвестным органом и вы хотите его принять).

Просто используйте @ "https://www.myhttpsite.com/" URL-адрес, и он должен работать так же, как обычный HTTPurls.

Чтобы обойти проблему безопасности нераспознанного лица, подписавшего сертификат, для NSURLConnection добавьте следующее к вашим методам делегата:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
    NSArray *trustedHosts = [NSArray arrayWithObjects:@"mytrustedhost",nil];

    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
        if ([trustedHosts containsObject:challenge.protectionSpace.host]) {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
        }
    }
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

В до iOS4.3 вам нужно что-то сделатьнемного по-другому, вы можете добавить категорию в класс URLRequest, который реализует обход безопасности для сертификатов от нераспознанного хоста.

Обратите внимание, что будьте осторожны с любым решением, которое игнорирует тот факт, что сертификат не подписан признанным органом какпри этом вы открываете потенциальную дыру в безопасности, но часто это необходимо, по крайней мере, для тестирования на тестовом сервере, на котором имеется самозаверяющий сертификат или сертификат с внутренней подписью.

Чтобы открыть соединение URL в веб-представлении:

NSURL *websiteUrl = [NSURL URLWithString:@"https://www.mysecuresite.com/"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteurl];
[myWebView loadRequest:urlRequest];
4 голосов
/ 03 февраля 2012

Хорошо, я нашел свой ответ. Спасибо gamozzii за помощь мне. Я сделал поиск по вашим кодам:)

Загрузка HTTPS-URL в UIWebView

Это работает для меня. Я также пробовал ссылки типа https://www.google.com

...