HardBirch

【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证

时间:12-06-06 栏目:iOS游戏开发技术 作者:张飞不张,文采横飞 评论:3 点击: 2,123 次


今天给大家带来一个简单的登陆验证,用的是ASIHttpRequest 这个开源类库,使用的方法很简单,从网上下载下来以后,添加到项目中,并添加一下这些框架。


下面上代码

//
//  ViewController.h
//  NetDemo
//
//  Created by zhouhaifeng on 12-6-6.
//  Copyright (c) 2012年 zhouhaifeng. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "ASIHttpHeaders.h"
#import "CJSONDeserializer.h"
#import "tooles.h"
@interface ViewController : UIViewController<ASIHTTPRequestDelegate>
{
    UITextField *username;
    UITextField *password;

}
@property (nonatomic,retain) UITextField *username;
@property (nonatomic,retain) UITextField *password;

@end
//
//  ViewController.m
//  NetDemo
//
//  Created by zhouhaifeng on 12-6-6.
//  Copyright (c) 2012年 zhouhaifeng. All rights reserved.
//

#import "ViewController.h"
#define HOSTURL @"http://192.168.1.105/NetDemo/index.php";

@interface ViewController ()
-(void) login:(id)sender;
-(void) GetErr:(ASIHTTPRequest *)request;
-(void) GetResult:(ASIHTTPRequest *)request;
@end

@implementation ViewController
@synthesize username,password;
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    UILabel *txt1 = [[UILabel alloc] initWithFrame:CGRectMake(30,100,70,30)];
    [txt1 setText:@"用户名"];
    [txt1 setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:txt1];

    UILabel *txt2 = [[UILabel alloc] initWithFrame:CGRectMake(30,140,70,30)];
    [txt2 setText:@"密   码"];
    [txt2 setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:txt2];

    username = [[UITextField alloc]initWithFrame:CGRectMake(120,100, 150, 30)];
    [username setBorderStyle:UITextBorderStyleRoundedRect];
    [self.view addSubview:username];

    password = [[UITextField alloc]initWithFrame:CGRectMake(120,140, 150, 30)];
    [password setBorderStyle:UITextBorderStyleRoundedRect];
    [password setSecureTextEntry:YES];
    [self.view addSubview:password];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn setTitle:@"提交" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
    [btn setFrame:CGRectMake(90, 180, 150, 40)];
    [self.view addSubview:btn];

}

-(void) login:(id)sender
{
    //表单提交前的验证
    if (username.text == nil||password.text==nil ) {
        [tooles MsgBox:@"用户名或密码不能为空!"];
		return;
    }
    //隐藏键盘
    [username resignFirstResponder];
    [password resignFirstResponder];
    //
    [tooles showHUD:@"正在登陆...."];
	NSString *urlstr = HOSTURL;
	NSURL *myurl = [NSURL URLWithString:urlstr];
	ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:myurl];
	//设置表单提交项
	[request setPostValue:username.text forKey:@"username"];
	[request setPostValue:username.text forKey:@"password"];
	[request setDelegate:self];
	[request setDidFinishSelector:@selector(GetResult:)];
	[request setDidFailSelector:@selector(GetErr:)];
	[request startAsynchronous];

}

   //获取请求结果
- (void)GetResult:(ASIHTTPRequest *)request{	

	[tooles removeHUD];
    NSData *data =[request responseData];
    NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:data error:nil];

  //输出接收到的字符串

NSString *str = [NSStringstringWithUTF8String:[data bytes]];

    NSLog(@"%@",str);

    //判断是否登陆成功 if ([dictionary objectForKey:@"yes"]) { [tooles MsgBox:[dictionary objectForKey:@"yes"]]; return; }else if ([dictionary objectForKey:@"error"] != [NSNull null]) { [tooles MsgBox:[dictionary objectForKey:@"error"]]; return; } } //连接错误调用这个函数 - (void) GetErr:(ASIHTTPRequest *)request{ [tooles removeHUD]; [tooles MsgBox:@"网络错误,连接不到服务器"]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } -(void) dealloc { [username release]; [password release]; [super dealloc]; } @end


php端验证的代码,随便写了下,后面就是返回一个JSON格式的字符串。

<?php
	if($_POST['username'] == "admin" &&  $_POST['password'] == "admin")
	{
		echo '{"yes":"登陆成功"}';
	}else
	{
		echo '{"error":"用户名或密码错误"}';
	};
?>

【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证:目前有3 条留言

  1. 地板
    BIAOBIAOqi:

    中间代码格式乱了哦><…

    2012-07-30 19:18 [回复]
  2. 板凳
    yjh4866:

    这只是个Demo吧,真正做项目就不能这么写了

    2012-08-24 11:18 [回复]
  3. 沙发
    qq421435703:

    大侠,给个demo吧!

    2012-09-28 10:47 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐