iOS中cookie使用

来源:互联网 发布:塑料袋污染 数据 编辑:程序博客网 时间:2024/05/21 17:03

1. 什么是cookie?

Cookie指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。定义于RFC2109。为网景公司的前雇员LouMontulli在1993年3月所发明。

在使用的时候,用户第一次登陆或者第一次和服务器连接,将会从服务器获取一次cookie。然后终端可能再给cookie中增加几个字段,然后存储在本地。

然后每次访问网页的时候,客户端会把Cookie发送给服务器。

实际上,在iOS系统中,cookie的数据形式是字典NSDictionary,一个键值对应一个参数。


2.iOS中对cookie的操作

iOS提供了两个类,用于操作cookie:

1. NSHTTPCookie  2. NSHTTPCookieStorage

NSHTTPCookieStorage是一个单例,存储管理所有的cookie。一个NSHTTPCookie对象是一个cookie。可以理解为NSHTTPCookieStorage管理的目标就是NSHTTPCookie。

关于这两个类的具体讲义见:点击打开链接

还是比较详细的。

下面上几段示例代码:

存储cookie:


  1. [[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:[NSHTTPCookie cookieWithProperties:properties]];  
//properties是一个字典。

获取cookie:


  1. NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];  
  2. for (NSHTTPCookie *cookie in cookies) {  
  3.     NSDictionary *dict = cookie.properties;  
  4.     NSLog(@"%@",dict);  
  5. }  


清除cookie:


  1. +(void) deleteCookie  
  2. {  
  3.     NSHTTPCookie *cookie;  
  4.     NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];  
  5.     for (cookie in [cookieJar cookies])  
  6.     {  
  7.         [cookieJar deleteCookie:cookie];  
  8.     }  




 通过请求头可以传递 一些web 想要的一些信息,但是这个方法有些局限性,如果web 跳转的时候头的信息会消息,最好的方法就是自定义cookie 传值

   NSURL* url = [NSURLURLWithString:self.url];

  NSMutableURLRequest *request = [[NSMutableURLRequestalloc]initWithURL: url];

   NSString *body = [NSString stringWithFormat: @"uuid=%@&sessionid=%@", uuid,sessionid];

   [request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]];

   [request setHTTPMethod: @"POST"];

    [self.myWebViewloadRequest:request];

    [self.viewaddSubview:self.myWebView];

  


  自定义ccokie 传值

  //定义 cookie要设定的 host

   NSURL* url = [NSURLURLWithString:self.url];

    NSURL *cookieHost = [NSURLURLWithString:self.url];

    NSDictionary *dic =@{@"uuid":uuid,@"sessionid":sessionid,@"feedid":self.feedid,@"softversion":softversion,@"devicetype":deviceId,@"touuid":   self.touuid};

    [dic enumerateKeysAndObjectsUsingBlock:^(id key,id obj, BOOL *stop) {

     //设定 cookie

    NSHTTPCookie *cookie = [NSHTTPCookiecookieWithProperties:

                                [NSDictionarydictionaryWithObjectsAndKeys:

                                 [cookieHosthost],NSHTTPCookieDomain,

                                 [cookieHostpath],NSHTTPCookiePath,

                                 key,NSHTTPCookieName,

                                 obj,NSHTTPCookieValue,

                                nil]];

    [[NSHTTPCookieStoragesharedHTTPCookieStorage]setCookie:cookie];

        

    }];


    [self.myWebViewloadRequest:request];//加载

    [self.viewaddSubview:self.myWebView];




0 0