Интегрировать дайджест-аутентификацию в цель c - PullRequest
0 голосов
/ 22 мая 2018

Я хочу интегрировать дайджест-аутентификацию в мой целевой код c.Я использую NSURLSessionDataTask.При первом вызове веб-сервиса я получаю значение nonce, а затем при следующем вызове устанавливаю заголовок того же веб-сервиса.

NSDictionary *payload;
    payload = @{
                @"Username"  : @"",
                @"Password"  : @"",
                };
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@""]
                                                           cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                       timeoutInterval:10.0];
    [request setHTTPMethod:@"GET"];
    NSError *error = nil;
    NSData *data = [NSJSONSerialization dataWithJSONObject:payload
                                                   options:0 error:&error];
    request.HTTPBody = data;

    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                    if (error) {
                                                        NSLog(@"%@", error);
                                                    } else {
                                                        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;

                                                        NSLog(@"%@", httpResponse);
                                                        NSDictionary* dictHeaders = [(NSHTTPURLResponse *)response allHeaderFields];

                                                         NSLog(@"%@",[dictHeaders objectForKey:@"Www-Authenticate"]);

                                                        [self callWSAfterAuthentication:[dictHeaders objectForKey:@"Www-Authenticate"]];
                                                    }
                                                }];
    [dataTask resume];

1 Ответ

0 голосов
/ 22 мая 2018

Вы не сказали в своем вопросе, какие именно у вас проблемы.Предполагая, что аутентификация просто не работает:

Добавьте NSURLSessionDelegate к вашему NSURLSession и обработайте аутентификацию в методе делегата URLSession:didReceiveChallenge:completionHandler:.Проверьте на NSURLAuthenticationMethodHTTPDigest и ответьте соответственно.(Вы можете найти информацию о том, как это реализовать)

...