Чтение данных / Ответ / Тело перенаправленного NSURLDataTask
В настоящее время я пытаюсь получить доступ к веб-странице, где пользователь может войти в систему, используя свои учетные данные, после ввода своего имени пользователя и пароля - если он правильный, он будет перенаправлен на новый URL. Этот новый URL загружает веб-страницу с одной строкой, которую я собираюсь использовать.
Тем не менее, как я могу проверить содержимое перенаправленного URL? На данный момент я могу только проверить Ответ / Данные / Содержимое начальной страницы, загруженной следующим способом;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
casSession = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSString *urlAddress = @"https://originalurl.com";
NSURL *httpUrl = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:httpUrl];
[loginPage loadRequest:requestObj];
NSURLSessionDataTask *redirect = [casSession dataTaskWithURL:httpUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *newURL = [NSString stringWithFormat: @"%@", response.URL];
if ([newURL containsString:@"ticket=ST"]) {
NSString * registrationID = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"REGISTRATION: %@", registrationID);
if (registrationID != nil) {
dispatch_async(dispatch_get_main_queue(), ^{
loginPage.hidden = YES;
});
}
} else {
NSLog(@"No ticket recieved");
}
}];
[redirect resume];
Я не уверен, какой делегат использовать, чтобы активно проверять каждый раз, когда происходит перенаправление, а затем получать содержимое нового URL?
Благодарю.
1 ответ
Вы смотрите на это неправильно. Вы должны запросить у пользователя информацию для входа в систему напрямую и вставить ее в один NSURLDataTask. Затем задача данных должна запросить у сервера информацию для входа и вернуть некоторые данные.
Все это происходит с API (в широком смысле), где вы не будете предоставлять пользователю содержимое HTML, а вместо этого возвращать какие-то закодированные данные.
Так, например, как только у вас есть задача, определенная из URL или URLRequest, и вы начинаете задачу, вы затем используете обработчик завершения для проверки возвращенных данных и / или ошибки. Если здесь, вы можете декодировать возвращенные данные как NSString, а затем преобразовать JSON в объекты, такие как данные профиля пользователя (имя, возраст, адрес электронной почты, ...)
Я не стал вдаваться в подробности в этом ответе, потому что это очень очень широкая тема со многими вариантами использования. Посмотрите несколько учебных пособий по NSURLDataTasks или использованию API-интерфейсов от Swift и / или Objective-C.