iOS开发: http请求 cookie值

本文介绍了iOS应用中处理登录及Cookie的策略。包括如何通过HTTP请求获取和存储Cookie,以及如何在后续请求中使用这些Cookie来保持登录状态,并提供了一个实际的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS http请求 cookie值

1. 废话:最近项目中在登录时遇到一个http 请求cookie值的问题:
首先是向服务器发送请求(服务器IP,登录账号和密码等)验证是否登录成功,当登录成功后需要跳转到个人信息的界面,这时就需要在个人信息界面展示一些昵称,电话号码等信息;那么什么时候获取个人信息比较好 ? 怎么获取(前端(数据库,本地存储) 还是 后台服务器存储) ? 最后后台的意思是:在登录的时候服务器返回成功后紧接着向服务器请求个人信息,获取成功后存到本地,然后跳转到个人信息页面,从本地查询信息展示;
这里 面有个问题就是在 请求个人信息的时候只是在接口前面设置了一下cookie头。
只要登录成功了,那浏览器(后台服务器)就会有一个对应的cookie 值,然后个人信息接口访问服务器的时候有cookie 头就说明登录成功了,可以获取的该用户的所有信息;

2. Cookie

Cookie是在客户端存储服务器状态的一种机制,Web服务器可以通过Set-Cookie或者Set-Cookie2 HTTP头部设置Cookie。

Cookie可以分为两类,会话Cookie和持久Cookie,会话Cookie是临时Cookie,当前会话结束(浏览器退出)时Cookie会被删除。持久Cookie会存储在用户的硬盘上,浏览器退出,然后重新启动后Cookie仍然存在。会话Cookie和持久Cookie的区别在于过期时间,如果设置了Discard参数(Cookie 版本1)或者没有设置Expires(Cookie版本0)或Max-Age(Cookie版本1)设置过期时间,则此Cookie为会话Cookie。

3.应用

   (1).cookie 的获取与保存


    //请求一个网址,即可分配到cookie
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer new];
    [manager GET:urlString parameters:dicsuccess:^(AFHTTPRequestOperation *operation, idresponseObject) {
 
        //获取cookie
        NSArray*cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
        //把cookie进行归档并转换为NSData类型
        NSData*cookiesData = [NSKeyedArchiver archivedDataWithRootObject:cookies];
 
        //存储归档后的cookie
        NSUserDefaults*userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject: cookiesData forKey: @"cookie"];
       
    } failure:^(AFHTTPRequestOperation *operation, NSError*error) {
 
             //请求数据失败
    }];


(2).cookie的设置

    //取出保存的cookie
    NSUserDefaults*userDefaults = [NSUserDefaults standardUserDefaults];
 
    //对取出的cookie进行反归档处理
    NSArray*cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[userDefaults objectForKey:@"cookie"]];
 
    if(cookies) {
       
        //设置cookie
        NSHTTPCookieStorage*cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for(idcookie in cookies) {
            [cookieStorage setCookie:(NSHTTPCookie*)cookie];
        }
    }else{
        NSLog(@"cookie设置失败");
    }

(3).cookie的删除
把获取到的cookie删除掉,该步骤可以用在注销或者切换账号里
 NSHTTPCookieStorage*cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray*cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
 
    //删除cookie
    for(NSHTTPCookie *tempCookie in cookies) {
        [cookieStorage deleteCookie:tempCookie];
    }
 
  
 







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值