120941138报:IOS项目实战-登录解析(Http请求)
来源:互联网 发布:象棋路边残局知乎 编辑:程序博客网 时间:2024/06/05 00:38
离发 IOS项目实战-登录解析 这篇博客有差不多一周了。也看到有朋友评论要把doLogin的代码补上来,因为我也是新手,所以在学习中写博客,效率是慢了点,同样在写例子的时候也碰到很多问题。也就都一起记录下来,就不会在犯同样的错误了。
这里请求网络服务器会用到第三方的框架ASIHttpRequest,该框架在CFNetwork.framework上进行了封装,让我在开发网络应用的时候更加便捷,所以当然要先添加这个框架到项目中。
下载地址:http://www.oschina.net/p/asihttprequest
在下载的文件中,会用到下图中的类
添加到项目中后,第一个错误就出现了,因为是ARC的项目,把上面的类一贴到项目中就报了ARC的错误
第一步:修改ASI的类为 -fno-objc-arc 就可以解决ARC的错误问题
第二步:引入几个主要的framework
1、CFNetwork.framework
2、MobileCoreServices.framework
3、SystemConfiguration.framework
4、libz.1.2.5.dylib
这几个包是一定要引入的,不然Xcode也会报出异常的。
第三步:修改Header Search Paths 和 Other Linker Flags
所有设置都搞定了,就要想一想调用doLogin时都要做些什么了。
1、在用户点击登录时,先在本地验证账号、密码是否合法,减轻每次都去请求服务器照成的网络访问
2、登录错误后,给予用户正确的提示信息
3、登录成功后,跳到需要显示给用户的首页面,并且在本地保存用户信息,以便下次登录
直接贴代码吧,代码里面有详细的注释,因为没有远程服务器做测试,所以借用了 @红薯 大哥的OsChina做测试,@红薯大哥千万别生气哦。
01
// 登陆
02
- (
void
)doLogin
03
{
04
bool
isSwitch =
true
;
05
NSString *errorMessage = @
""
;
06
NSString *name = self.nameField.text;
07
NSString *pwd = self.pwdField.text;
08
// 验证用户不为nil且不为空的字符串
09
if
(!name || [name isEqualToString:@
""
])
10
{
11
isSwitch =
false
;
12
errorMessage = @
"账号不能为空"
;
13
}
14
// 验证密码不为nil且不为空的字符串
15
else
if
(!pwd || [pwd isEqualToString:@
""
])
16
{
17
isSwitch =
false
;
18
errorMessage = @
"密码不能为空"
;
19
}
20
// 如果isSwitch不为true,说明本地的验证没有通过
21
if
(!isSwitch)
22
{
23
// show出alert提示用户
24
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@
""
message:errorMessage delegate:self cancelButtonTitle:@
"确定"
otherButtonTitles: nil];
25
[alertView show];
26
}
else
{
27
// 通过验证请求服务器
28
NSURL *url = [NSURL URLWithString:api_login_validate];
29
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
30
[request setPostValue:name forKey:@
"username"
];
31
[request setPostValue:pwd forKey:@
"pwd"
];
32
[request setPostValue:@
"1"
forKey:@
"keep_login"
];
33
[request startSynchronous];
34
35
NSError *error = [request error];
36
37
if
(!error) {
38
// 服务器返回数据,解析数据,成功跳转,失败提示用户
39
NSString *response = [request responseString];
40
NSLog(@
"%@"
, response);
41
}
42
43
}
44
45
}
如果服务器返回的Josn的话,可以通过SBJson或其它IOS的第三方Json框架来解析。
登录的业务处理,解析,保存Cookie等操作,可以写一个工具类来封装,因为在其它的模块可能会验证用户是否登录或取用户的信息等,因为是Demo,没有封装这些操作。
- 120941138报:IOS项目实战-登录解析(Http请求)
- IOS项目实战-登录解析(Http请求) ASIHttpRequest
- IOS项目实战-登录解析
- ionic项目在ios调试时http请求报错
- iOS HTTP请求与解析
- iOS HTTP请求与解析
- IOS项目实战-登陆解析
- iOS项目开发实战——使用AFNetworking进行Http Get请求
- IOS 发送HTTP请求报错
- IOS 发送HTTP请求报错
- 23. XML 解析 / HTTP 请求方法 / 模拟登录 / MD5
- iOS开发 Xcode7 使用NSURLSession发送HTTP请求报错
- IOS -Xcode7 使用NSURLSession发送HTTP请求报错
- http请求报错
- Cookie登录项目实战
- 解析Spring mvc 项目的所有http请求
- iOS上的http请求和JSON解析
- java解析http请求
- 120941138报:关于移动互联网:十个你不知道的惊人事实
- (总结)Nginx配置文件nginx.conf中文详解
- 120941138报:凌乱了,java比c++快
- js 去除最后一个,
- 分布式系统原理要点
- 120941138报:IOS项目实战-登录解析(Http请求)
- UVA 494 Kindergarten Counting Game
- 怎样得到鼠标光标图相关信息(DirectX 截图取得光标 的方法)
- AIR文件操作
- Java串口编程
- C#实现文件下载的几种方式
- 120941138报:OpenERP 7.0 即将发布
- C# 文件下载四方法
- 小沈阳恶搞版《大话切糕》