iOS中关于登录验证方面的问题的解决
2015-08-13 14:36
585 查看
谢各位大神的帮助 同样也期待同行的指点 ,本文仅供自己参考请勿用于商业目的,转载请注明作者和地址,谢谢!
因为我自己也是小白 也在学习 ,所以自己弄完一个demo之后赶紧想办法写下来 ,留给自己以后参考!
也给需要的人一点参考意见 。
在这里特别感谢大神 ruzhuxiaogu 的帮助!
我用的是xcode6.4 版本应该是目前最新的 所以网上很多的解答都不太适合我。
做登录验证的话 首先要建立一个项目 我这里建立的是 “ 百汇百通 ”
选择single view,点击next
好了 这时候一个简单的项目已经创建好了,目录界面如下:
当然这时候可能会有小白说怎么我的目录和你的不一样 ,我说明一下 ,我这个目录里面的两个组 (BaiHui 和 images )是自己测试的时候添加的,懒得删除了,另外一个 “ios test ”这个文件夹也是测试添加 所以你们创建了的话没有这三个文件夹和包是正常的。
下一步我选择在storyboard中操作。
点击main.storyboard 就会有如下界面:
下面我门在窗口中布局 ,我做出来的demo 布局界面如下:
看我的界面可以看出 除了几个美化用的 imageview 真正有用的只有三个,两个文本框 ,一个登录按钮。
那么现在我门要把这个界面和代码联系起来 ,具体的方法是:
点击xcode功能框的一处 ,如图:
就那两个圈圈的那个按钮 点了之后会弹出viewcontroller.h
按住contro+鼠标左键 点击文本框
就会弹出小界面:
这里只要在name里输入文本框的名字就行了 我输入的是 username;
同样的方法把第二个文本框也连接到代码里,name 填的是 pwd ;
现在我们来连接这个登录按钮;同样的contro+鼠标左键 到viewcontroller.h , 但是要注意 ,这次弹出来的小框我们要选择 action
name的话我填的是 signin ;
这样的话 连接就完成了 ,你在viewcontroller.m文件里的最下面就可以看到这样子一行代码:
- (IBAction)signin:(id)sender {
}
这就是那个按钮的方法了。
需要实现的功能可以把方法写道这个按钮里面
现在我就写入我的登录验证需要的方法。代码如下:
- (IBAction)signin:(id)sender {
NSString*username=self.username.text;
NSString*pwd=self.pwd.text;
NSString *str =[NSString
stringWithFormat:@"ActionCode=0x2001¶meter=pwd###%@#####userNo###%@&LoginID=&LoginIp=",pwd,username];//设置参数
NSString *encodedValue = [str
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString*str2=[NSString
stringWithFormat:@"http://14.17.84.128:8088/wcf/ActionService.svc/action/web/get/do?%@",encodedValue];
if ([username length]<1&[pwd
length]<1) {
UIAlertView *alter = [[UIAler
4000
tView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号和密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
if ([username length]<1) {
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
if ([pwd length]<1) {
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
{
NSURL*url=[NSURL
URLWithString:str2];
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10];
//NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
//第三步,连接服务器
NSData *received = [NSURLConnection
sendSynchronousRequest:request returningResponse:nil
error:nil];
NSString *str3 = [[NSString
alloc]initWithData:received
encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str2);
NSLog(@"%@",str3);
NSDictionary *dict=[NSJSONSerialization
JSONObjectWithData:received options:NSJSONReadingMutableLeaves
error:nil];
NSString*result=dict[@"Result"];
// NSLog(@"%@",result);
NSData *jsonData=[result
dataUsingEncoding:NSUTF8StringEncoding];
NSError*err;
NSDictionary*res=[NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers
error:&err];
if (err) {
NSLog(@"json解析失败");
}
NSString*CompanyCode=res[@"CompanyCode"];
NSString*CompanyID=res[@"CompanyID"];
NSLog(@"CompanyCode:%@",CompanyCode);
NSLog(@"CompanyID:%@",CompanyID);
//验证完成后加载webview
if ([CompanyCode length]>1) {
NSLog(@"登录成功");
//测试正在登录
宋康
//UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"网页提示" message:@"正在登录" delegate:nil cancelButtonTitle:@"确定"
otherButtonTitles:nil];
// [alter show];
NSString*str4=[NSString
stringWithFormat:@"http://app.gps580.com/?info=%@",str3];
//NSLog(@"%@",str4);
NSString *encodedValue1 = [str4
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIWebView *webView = [[UIWebView
alloc] initWithFrame:[UIScreen
mainScreen].bounds];
//NSString *str5=[NSString stringWithFormat:str4];
// NSString *encodedValue1 = [str5 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[webView
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:encodedValue1]]];
UIViewController *viewCro = [[UIViewController
alloc]
init];
//......
//file:///Users/ken/Desktop/ios%20test/index.html
//.......file:///Users/ken/Downloads/BaiHui/main.html#&login
[viewCro.view
addSubview:webView];
[self
presentViewController:viewCro animated:YES
completion:nil];
}
//登录失败时弹出提示框
else
{
NSLog(@"登录失败");
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"账号或密码错误"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
}
}
这个时候 一个登录验证的app就做好了 ,可以成功的在模拟器上跑起来了, 我这里提供的代码里的登录的api是公司的 ,所以不方便透露账号和密码,你们可以自己修改登录的地址和参数。
成功后的界面:
输入账号密码登录进去 之后就是打开一个网页浏览器啦 :
谢谢各位大神的帮助 同样也期待同行的指点 ,本文仅供自己参考请勿用于商业目的,转载请注明作者和地址,谢谢。
稍后我会提供下载地址(可能会要积分)
因为我自己也是小白 也在学习 ,所以自己弄完一个demo之后赶紧想办法写下来 ,留给自己以后参考!
也给需要的人一点参考意见 。
在这里特别感谢大神 ruzhuxiaogu 的帮助!
我用的是xcode6.4 版本应该是目前最新的 所以网上很多的解答都不太适合我。
做登录验证的话 首先要建立一个项目 我这里建立的是 “ 百汇百通 ”
选择single view,点击next
好了 这时候一个简单的项目已经创建好了,目录界面如下:
当然这时候可能会有小白说怎么我的目录和你的不一样 ,我说明一下 ,我这个目录里面的两个组 (BaiHui 和 images )是自己测试的时候添加的,懒得删除了,另外一个 “ios test ”这个文件夹也是测试添加 所以你们创建了的话没有这三个文件夹和包是正常的。
下一步我选择在storyboard中操作。
点击main.storyboard 就会有如下界面:
下面我门在窗口中布局 ,我做出来的demo 布局界面如下:
看我的界面可以看出 除了几个美化用的 imageview 真正有用的只有三个,两个文本框 ,一个登录按钮。
那么现在我门要把这个界面和代码联系起来 ,具体的方法是:
点击xcode功能框的一处 ,如图:
就那两个圈圈的那个按钮 点了之后会弹出viewcontroller.h
按住contro+鼠标左键 点击文本框
就会弹出小界面:
这里只要在name里输入文本框的名字就行了 我输入的是 username;
同样的方法把第二个文本框也连接到代码里,name 填的是 pwd ;
现在我们来连接这个登录按钮;同样的contro+鼠标左键 到viewcontroller.h , 但是要注意 ,这次弹出来的小框我们要选择 action
name的话我填的是 signin ;
这样的话 连接就完成了 ,你在viewcontroller.m文件里的最下面就可以看到这样子一行代码:
- (IBAction)signin:(id)sender {
}
这就是那个按钮的方法了。
需要实现的功能可以把方法写道这个按钮里面
现在我就写入我的登录验证需要的方法。代码如下:
- (IBAction)signin:(id)sender {
NSString*username=self.username.text;
NSString*pwd=self.pwd.text;
NSString *str =[NSString
stringWithFormat:@"ActionCode=0x2001¶meter=pwd###%@#####userNo###%@&LoginID=&LoginIp=",pwd,username];//设置参数
NSString *encodedValue = [str
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString*str2=[NSString
stringWithFormat:@"http://14.17.84.128:8088/wcf/ActionService.svc/action/web/get/do?%@",encodedValue];
if ([username length]<1&[pwd
length]<1) {
UIAlertView *alter = [[UIAler
4000
tView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号和密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
if ([username length]<1) {
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
if ([pwd length]<1) {
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
else
{
NSURL*url=[NSURL
URLWithString:str2];
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10];
//NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
//第三步,连接服务器
NSData *received = [NSURLConnection
sendSynchronousRequest:request returningResponse:nil
error:nil];
NSString *str3 = [[NSString
alloc]initWithData:received
encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str2);
NSLog(@"%@",str3);
NSDictionary *dict=[NSJSONSerialization
JSONObjectWithData:received options:NSJSONReadingMutableLeaves
error:nil];
NSString*result=dict[@"Result"];
// NSLog(@"%@",result);
NSData *jsonData=[result
dataUsingEncoding:NSUTF8StringEncoding];
NSError*err;
NSDictionary*res=[NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers
error:&err];
if (err) {
NSLog(@"json解析失败");
}
NSString*CompanyCode=res[@"CompanyCode"];
NSString*CompanyID=res[@"CompanyID"];
NSLog(@"CompanyCode:%@",CompanyCode);
NSLog(@"CompanyID:%@",CompanyID);
//验证完成后加载webview
if ([CompanyCode length]>1) {
NSLog(@"登录成功");
//测试正在登录
宋康
//UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"网页提示" message:@"正在登录" delegate:nil cancelButtonTitle:@"确定"
otherButtonTitles:nil];
// [alter show];
NSString*str4=[NSString
stringWithFormat:@"http://app.gps580.com/?info=%@",str3];
//NSLog(@"%@",str4);
NSString *encodedValue1 = [str4
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIWebView *webView = [[UIWebView
alloc] initWithFrame:[UIScreen
mainScreen].bounds];
//NSString *str5=[NSString stringWithFormat:str4];
// NSString *encodedValue1 = [str5 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[webView
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:encodedValue1]]];
UIViewController *viewCro = [[UIViewController
alloc]
init];
//......
//file:///Users/ken/Desktop/ios%20test/index.html
//.......file:///Users/ken/Downloads/BaiHui/main.html#&login
[viewCro.view
addSubview:webView];
[self
presentViewController:viewCro animated:YES
completion:nil];
}
//登录失败时弹出提示框
else
{
NSLog(@"登录失败");
UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"账号或密码错误"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alter
show];
}
}
}
这个时候 一个登录验证的app就做好了 ,可以成功的在模拟器上跑起来了, 我这里提供的代码里的登录的api是公司的 ,所以不方便透露账号和密码,你们可以自己修改登录的地址和参数。
成功后的界面:
输入账号密码登录进去 之后就是打开一个网页浏览器啦 :
谢谢各位大神的帮助 同样也期待同行的指点 ,本文仅供自己参考请勿用于商业目的,转载请注明作者和地址,谢谢。
稍后我会提供下载地址(可能会要积分)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- asp.net使用ODP即oracle连接方式的的防注入登录验证程序
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- php自动注册登录验证机制实现代码
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- 加载带有手势识别器的XIB文件需注意哪些问题