Ios 读取重定向的NSURLDataTask的数据/响应/正文

Ios 读取重定向的NSURLDataTask的数据/响应/正文,ios,objective-c,redirect,nsurlsession,nsurlsessiondatatask,Ios,Objective C,Redirect,Nsurlsession,Nsurlsessiondatatask,我目前正在尝试访问一个网页,用户可以使用他们的凭据登录,输入他们的用户和密码后-如果正确,它将重定向到一个新的url。这个新的url加载了一个带有我打算使用的单个字符串的网页 但是,如何检查重定向url的内容?目前,我只能检查以下方法加载的初始页面的响应/数据/内容 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; casSessi

我目前正在尝试访问一个网页,用户可以使用他们的凭据登录,输入他们的用户和密码后-如果正确,它将重定向到一个新的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的内容


谢谢。

你看得不对。您应该直接向用户查询登录信息,并将其插入到单个NSURLDataTask中。然后,数据任务应该使用登录信息查询服务器,并返回一些数据

这一切都发生在API中(广义地说),在API中,您不会向用户呈现HTML内容,而是返回某种编码数据

因此,例如,一旦您从URL或URLRequest定义了一个任务,并且开始了该任务,那么您就可以使用完成处理程序来验证返回的数据和/或错误。如果在这里,您可以将返回的数据解码为NSString,然后将JSON转换为对象,例如用户的配置文件数据(姓名、年龄、电子邮件等)


我没有在这个答案中详细说明,因为这是一个非常广泛的主题,有许多用例。从Swift和/或Objective-C中查找一些有关NSURLDataTasks或消费API的教程。

你看得不对。您应该直接向用户查询登录信息,并将其插入到单个NSURLDataTask中。然后,数据任务应该使用登录信息查询服务器,并返回一些数据

这一切都发生在API中(广义地说),在API中,您不会向用户呈现HTML内容,而是返回某种编码数据

因此,例如,一旦您从URL或URLRequest定义了一个任务,并且开始了该任务,那么您就可以使用完成处理程序来验证返回的数据和/或错误。如果在这里,您可以将返回的数据解码为NSString,然后将JSON转换为对象,例如用户的配置文件数据(姓名、年龄、电子邮件等)

我没有在这个答案中详细说明,因为这是一个非常广泛的主题,有许多用例。从Swift和/或Objective-C查找有关NSURLDataTasks或消费API的教程