Asihttprequest Cookie的使用(二)
2014-04-12 10:36
686 查看
最近项目中要用Cookie来实现登录,之前的项目都是保存的帐号和加密过后的密码,对这块不是很了解。Cookie登录就是判断本地有没有Cookie有的话直接登陆,项目里的一些接口在请求中加上自定义的Cookie。项目使用的是asigttprequest这个开源框架。
后台登录的实现需要2个过程,一是保存Cookie,二是上传Cookie。
在第一次登录时要保存下Cookie的Token,这个是要需要和后台做好约定的。第一次登录时会返给你后台的Cookie信息,
[request responseCookies]方法可以得到Cookie数组的信息,
NSDictionary *headers = [request responseHeaders];
NSString *setcookie = [headers objectForKey:@"Set-Cookie"] ;
这2个方法可以得到你想要的token.在得到的token字符串中分割时你想要的信息。
这时利用NSUserDefaults把token保存下来。方便后面使用cookie登录。
接下来的工作是上传保存下来的cookie,在asihttprequest文档上也有说明。
代码如下:
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[NSString stringWithFormat:@"%@",[GUserSetting provider].UserCookie] forKey:NSHTTPCookieValue];
[properties setValue:@"SessionId" forKey:NSHTTPCookieName];
[properties setValue:domain forKey:NSHTTPCookieDomain];
[properties setValue:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];
//NSLog(@"%@",cookie);
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
这里需要注意的是,
NSHTTPCookieName是和服务器约定好的token,
NSHTTPCookieValue是你要刚才保存下来的token值,
NSHTTPCookieDomain和NSHTTPCookiePath一定要加上,不然会上传不成功的Cookie。
在asihttrequest时使用时要把setUseCookiePersistence设为NO;
我这样我们在用Cookie登录时只要把把保存下的Cookie上传到服务器就可以正常使用接口了,不会提示未登录。
2014年8月5日:
在介绍篇别人写的关于AFNetworking Cookie的文章
http://www.skyfox.org/ios-url-request-cookie.html
后台登录的实现需要2个过程,一是保存Cookie,二是上传Cookie。
在第一次登录时要保存下Cookie的Token,这个是要需要和后台做好约定的。第一次登录时会返给你后台的Cookie信息,
[request responseCookies]方法可以得到Cookie数组的信息,
NSDictionary *headers = [request responseHeaders];
NSString *setcookie = [headers objectForKey:@"Set-Cookie"] ;
这2个方法可以得到你想要的token.在得到的token字符串中分割时你想要的信息。
这时利用NSUserDefaults把token保存下来。方便后面使用cookie登录。
接下来的工作是上传保存下来的cookie,在asihttprequest文档上也有说明。
代码如下:
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[NSString stringWithFormat:@"%@",[GUserSetting provider].UserCookie] forKey:NSHTTPCookieValue];
[properties setValue:@"SessionId" forKey:NSHTTPCookieName];
[properties setValue:domain forKey:NSHTTPCookieDomain];
[properties setValue:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];
//NSLog(@"%@",cookie);
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
这里需要注意的是,
NSHTTPCookieName是和服务器约定好的token,
NSHTTPCookieValue是你要刚才保存下来的token值,
NSHTTPCookieDomain和NSHTTPCookiePath一定要加上,不然会上传不成功的Cookie。
在asihttrequest时使用时要把setUseCookiePersistence设为NO;
我这样我们在用Cookie登录时只要把把保存下的Cookie上传到服务器就可以正常使用接口了,不会提示未登录。
2014年8月5日:
在介绍篇别人写的关于AFNetworking Cookie的文章
http://www.skyfox.org/ios-url-request-cookie.html
相关文章推荐
- 自动检测iOS网络并可跳转至设置界面设置网络
- 网络接口
- 【Unix 网络编程】服务器网络编程模型——I/O复用:select 函数
- nyoj-170-网络的可靠性
- 编程思想和网络协议处理
- 编程思想和网络协议处理
- VMware Workstation最小化安装centos6.5命令模式网络配置
- http://os.51cto.com/art/201005/202380.htm
- HTTP请求报文和HTTP响应报文
- 深入理解HTTP协议(转)浏览…
- git进行https访问出错
- HTTP 状态码
- 最简单的TCP程序
- HTTP服务器与android客户端的json交互
- 排查公司常见网络故障
- Linux服务器上监控网络带宽与监控性能命令大全
- linux 下设置 git 使用 http/https 代理
- Java网络编程之URL编程
- 并发连接数的理解
- C#同步网络时间和本地时间