1

URLにリクエストを送信し、変数またはユーザー名とパスワードをURLに投稿するログインページがあり、完了すると新しいView Controllerに移動します。

正しいユーザー名とパスワードを入力すると、リクエストが機能します。ログにhtmlをコピーできるため、リクエストを行ったプロファイルが表示されます。

間違った詳細を入力して html をコピーすると、ログまたはコンソールからログイン ページの html が取得されます。

正しい詳細が入力されたときにのみ、ユーザーを新しいビューコントローラーまたはモーダルタブバーに誘導するにはどうすればよいですか?

間違った内容が入力された場合にエラーを表示したい。

どうもありがとう

LoginTableViewController.h

#import <UIKit/UIKit.h>

@interface LoginTableViewController : UITableViewController
{
UITabBarController *tbc;
}

- (void)dismissTabBar;
@property (nonatomic, retain) UITabBarController *tbc;

@end

LoginTableViewController.m

#import "LoginTableViewController.h"
#import "rootViewController.h"

@interface LoginTableViewController ()
@property (weak, nonatomic) IBOutlet UITextField *UIEmailTextField;
@property (weak, nonatomic) IBOutlet UITextField *UIPasswordTextField;

@end

@implementation LoginTableViewController
@synthesize UIEmailTextField;
@synthesize UIPasswordTextField;
@synthesize tbc;

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{


[super viewDidLoad];
}

- (void)viewDidUnload
{
[self setUIEmailTextField:nil];
[self setUIPasswordTextField:nil];
[super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - barButton Outlet

- (IBAction)loginButtonPressed:(UIBarButtonItem *)sender {
NSString *data = [NSString stringWithFormat:@"username=%@&password=%@",UIEmailTextField.text, UIPasswordTextField.text];
NSData *postData = [data dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

// preaparing URL request to send data.

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
NSString *url = [NSString stringWithFormat:@"https://online.vrmcapital.co.za"];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
[request setTimeoutInterval:7.0];

NSURLResponse *response;
NSError *error;

NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

NSLog(@"Login response:%@",str);

NSLog(@"Log In button was pressed!");


NSLog(@"Tab Bar Controller Button Clicked");
UIViewController *blueController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
blueController.view.backgroundColor = [UIColor blueColor];
blueController.title = @"Blue";
blueController.tabBarItem.image = [UIImage imageNamed:@"Gallery.png"];

UIViewController *redController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
redController.view.backgroundColor = [UIColor redColor];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(20.0f, 140.0f, 280.0f, 40.0f)];
[button setTitle:@"Done" forState:UIControlStateNormal];
[button addTarget:self action:@selector(dismissTabBar) forControlEvents:UIControlEventTouchUpInside];

[redController.view addSubview:button];
//redController.title = @"Red1";
[redController setTitle:@"Red1" ];
redController.tabBarItem.image = [UIImage imageNamed:@"Gallery.png"];
image:[UIImage imageNamed:@"Gallery.png"];


tbc = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
tbc.viewControllers = [NSArray arrayWithObjects:blueController, redController, nil];
tbc.selectedViewController = redController;
NSLog(@"Selected index = %d of %d", tbc.selectedIndex, [tbc.viewControllers count]);

//[blueController release];
//[redController release];
[self presentViewController:tbc animated:YES completion:nil];



}

- (void)dismissTabBar {
[[self tbc] dismissViewControllerAnimated:YES completion:nil];

}

@end
4

1 に答える 1

1

リクエストでヒットしているサーバー エンドポイントは、誤ったユーザー名またはパスワードを提供するたびに HTML フォームを提供するようです。それ以外の場合は、別の HTML ページを提供すると思います。

いずれにせよ、適切な Web サービスがなければ、HTML の解析に対処する必要があります。Web 開発者がパーサーを壊すような方法でページを変更することを決定しないことを願っています...繰り返しますが、適切な Web サービスがなければ、成功した要求と失敗した要求を区別するために HTML ページの解析に頼る必要があります。

余談ですが、本当にNSURLConnectionメイン スレッドで の同期 API を使用しますか? ネットワーク接続が不十分な場合、メイン スレッドがブロックされます。

于 2012-10-21T21:29:57.243 に答える