Vah*_*ahe 5 objective-c ios nsurlsession
我目前正在从事iOS编程课程的项目.作为课程项目的一部分,我正在努力使特定部分成功运作.
我正在使用NSAlert对话框提供我的登录名和密码,以便在HTML字符串中获取已注册的类.
我的大学维持学生在大学信息系统上的入学课程表,我可以从中登录并查看我的课程.
我想登录大学网页,该网页有一个名为submit.asp的页面来处理从登录表单发送的POST请求.在实际的浏览器上,当我提交我的凭据,并在一些服务器处理并重定向到另一个页面后,我能够导航到我的课程安排页面,没有任何问题.
- (BOOL) loginToStudentPortal: (NSString *) ID : (NSString *) pin
{
NSString *submitUrl = @"https://eweb4.laccd.edu/Common/submit.asp";
NSString *scheduleUrl = @"https://eweb4.laccd.edu/WebStudent/validate.asp";
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSURL *URL = [NSURL URLWithString:submitUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
NSString * submitParams = [NSString stringWithFormat:@"ssn1=%@&ssn2=&pin=%@REDIRECT/WebStudent/validate.asp", ID, pin];
NSString * submitParams2 = [NSString stringWithFormat:@"HOLDER=Y"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[submitParams dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
//Here I Try to initiate a second dataTaskWithRequest to the next URL
//But there is no way to jump to the destination page without losing the session
//NSString *receivedData = [[NSString alloc] initWithData:responseObject encoding:NSASCIIStringEncoding];
//NSLog(@"%@ %@", response, receivedData);
}];
[dataTask resume];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在XCode 5中运行iPhone模拟器的初始请求时,我无法在第一次请求后保留会话.
尝试在main completionHandler的else块中启动后续dataTask请求是否正确?
其次,我是否需要手动确保我遵循服务器的任何重定向?
我能够解决该问题并最终到达目标页面。
我最初的尝试是一个开始,但我继续进一步调查该行为,似乎我无法继续的原因之一是我正在调试,并且我认为发生了超时。
当我运行该程序并删除所有断点时,该程序将输出正确的 HTML。
更重要的是,我确保在我的函数中重现了确切的事件链。我添加了完成处理程序中所需的所有数据任务。
我最终能够检索包含所需信息的 HTML 字符串。
事实证明,会话是通过我使用的方法进行管理的。可能我的会话超时了,这就是我提出最初问题的原因。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |