ios - 通过 POST 登录后如何到达下一页

标签 ios objective-c nsurlrequest

在接下来的代码行中,我尝试通过 POST 登录到 moodle 系统。这工作得很好,如果我留下两行评论,我可以在登录后看到网页。但是当我尝试导航到位于 protected 区域中的下一个网页时,我总是会看到登录页面。

所以我的问题是,如何导航到 protected 页面并将其显示在 WebView 中?

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults synchronize];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[defaults stringForKey:@"loginpage"]]];

    [request setHTTPMethod:@"POST"];

    NSString *post =[[NSString alloc] initWithFormat:@"username=%@&password=%@",
                 [defaults stringForKey:@"username"],[defaults stringForKey:@"password"]];
    NSLog(@"Post is: %@",post);

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSLog(@"postData is: %@",postData);

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSLog(@"postLength is: %@",postLength);

    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody:postData];

    NSLog(@"request is: %@", [request allHTTPHeaderFields]);


    [self.webview loadRequest:request];

    //if i do not comment the next two lines, the loginpage is displayed in the webview.
    //Otherwise the correct page with username after login is displayed.
    //request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[defaults stringForKey:@"displaypage"]]];

    //[self.webview loadRequest:request];

    NSLog(@"Done");

最佳答案

loadRequest 方法是异步的,这意味着当该方法返回时,很可能还没有加载完第一个网页。 因此,当您取消注释这两行时,可能是第二个请求正在执行,而第一个请求尚未完成。

您应该在 UIWebViewDelegate 的 webViewDidFinishLoad: 方法中执行第二个请求。

关于ios - 通过 POST 登录后如何到达下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21683553/

相关文章:

ios - 如何从 NSdata 创建 AudioBuffer/Audio

objective-c - NSButtonCell NSSwitchButton 不显示复选框

ios - NSURL 请求不起作用

ios - 当聚焦于第二次加载的文本字段时,UIWebView 不显示键盘

android - 如何配置分支 io 链接以将用户重定向到某个 url,而不是在已安装的应用程序或 Playstore 上

ios - 如何在 iOS 中将 UISearch 栏设置为 UiActionSheet?

iphone - 操作 AudioBuffer 的 mData 中的数据

ios - 上传带有进度的异步图像

objective-c - 用于呈现多个模态的 NSNotificationCenter?

ios - 将 iOS 框架作为文件或 pod 分发