本文转载至 http://www.cocoachina.com/bbs/read.php?tid=93220&page=e&#a

 
 
持久化cookie

ASIHTTPRequest允许你使用全局存储来和所有使用CFNetwork或者NSURLRequest接口的程序共享cookie。

如果设置useCookiePersistence为YES(默认值),cookie会被存储在共享的 NSHTTPCookieStorage 容器中,并且会自动被其他request重用。值得一提的是,ASIHTTPRequest会向服务器发送其他程序创建的cookie(如果这些cookie对特定request有效的话)。

你可以清空session期间创建的所有cookie:
1
    
[ASIHTTPRequest setSessionCookies:nil];

这里的‘session cookies’指的是一个session中创建的所有cookie,而非没有过期时间的cookie(即通常所指的会话cookie,这种cookie会在程序结束时被清除)。

另外,有个方便的函数 clearSession可以清除session期间产生的所有的cookie和缓存的授权数据。

自己处理cookie

如果你愿意,你大可以关闭useCookiePersistence,自己来管理某个request的一系列cookie:
//创建一个cookie
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[@"Test Value" encodedCookieValue] forKey:NSHTTPCookieValue];
[properties setValue:@"ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName];
[properties setValue:@".dreamingwish.com" forKey:NSHTTPCookieDomain];
[properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires];
[properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];

//这个url会返回名为'ASIHTTPRequestTestCookie'的cookie的值
url = [NSURL URLWithString:@"http://www.dreamingwish.com/"];
request = [ASIHTTPRequest requestWithURL:url];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
[request startSynchronous];

//将会打印: I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie'
NSLog(@"%@",[request responseString]);

 
 
 
本文转载至 http://www.colabug.com/thread-1051112-1-1.html
最近项目中要用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文档上也有说明。 
  代码如下:

  1. NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
  2. [properties setValue:[NSString stringWithFormat:@"%@",[GUserSetting provider].UserCookie] forKey:NSHTTPCookieValue];
  3. [properties setValue:@"SessionId" forKey:NSHTTPCookieName];
  4. [properties setValue:domain forKey:NSHTTPCookieDomain];
  5. [properties setValue:@"/" forKey:NSHTTPCookiePath];
  6. NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];
  7. //NSLog(@"%@",cookie);
  8. [request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];

这里需要注意的是, 
  NSHTTPCookieName是和服务器约定好的token, 
  NSHTTPCookieValue是你要刚才保存下来的token值, 
  NSHTTPCookieDomain和NSHTTPCookiePath一定要加上,不然会上传不成功的Cookie。 
  在asihttrequest时使用时要把setUseCookiePersistence设为NO; 
  我这样我们在用Cookie登录时只要把把保存下的Cookie上传到服务器就可以正常使用接口了,不会提示未登录。

 

ASIHTTPRequest-Cookie的使用的更多相关文章

  1. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

  2. 强大的HTTP包装开源项目ASIHTTPRequest介绍

    ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装.它的特色功能如下: 1,下载的数据直接保存到内存或文件系统里 2,提供 ...

  3. ASIHTTPRequest详解 [经典]

    ASIHTTPRequest 对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPR ...

  4. ASIHTTPRequest类库简介和使用说明

    官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS SDK中的HTTP网络请求API,相当的复杂, ...

  5. IOS 网络请求中设置cookie

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   1. ASIHTTPRequest ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目.让简单的 A ...

  6. iOS - ASIHTTPRequest 网络请求

    前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 AP ...

  7. IOS 在http请求中使用cookie

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainbird.blog.51cto.com/211214/805173 一直以 ...

  8. ASIHTTPRequest详解

    ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRe ...

  9. ASIHTTPREQUEST 文档

    http://blog.csdn.net/ysysbaobei/article/details/17026577 Please note that I am no longer working on ...

  10. IOS网络请求框架AFNetworking和ASIHttpRequest对比

    ASI基于CFNetwork框架开发,而AFN基于NSURL. ASI更底层,请求使用创建CFHTTPMessageRef进行,使用NSOperationQueue进行管理,ASIHTTPReques ...

随机推荐

  1. 64位Ubuntu 14.04 安装wps

    因为wps还没有提供64位版本号的wps,13.10開始又取消了ia32-libs的支持,经过自己測试,能够使用下面命令完毕安装 sudo dpkg -i 包名 sudo apt-get -f ins ...

  2. ylb: 数据库操作方法基础

    ylbtech-SQL Server:SQL Server-数据库操作方法基础 数据库操作方法基础. ylb: 数据库操作方法基础 返回顶部 ----------试图操作(view)--------- ...

  3. [转载]How to Install Google Chrome 39 in CentOS/RHEL 6 and Fedora 19/18

    FROM: http://tecadmin.net/install-google-chrome-in-centos-rhel-and-fedora/ Google Chrome is a freewa ...

  4. 使用RAP搭建前端Mock Server

    转载自:<前后端分离--构建前端Mock Server--windows部署rap>http://www.cnblogs.com/dothin/p/5361883.html mock:模拟 ...

  5. 页面加载后累加,自加1&&判断数字是否为两位数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. OpenSSL Heartbleed "心脏滴血"漏洞简单攻击示例

    转自:http://www.lijiejie.com/openssl-heartbleed-attack/ OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一 ...

  7. PHP奇偶行不同显示不同的背景

    有时数据成表格状 为了更加美观会将奇偶行显示不同的背景色. 实现代码: <foreach name="list" item="v" key='k'> ...

  8. useradd(总结)

    useradd,一条简单的语句,会引起六个文件的变化 举例一: useradd sc 1.可以看到在最后一行,多了一个用户.cat /etc/passwd [有一个字段为X,代表还没有密码] 2.密码 ...

  9. Web用户的身份验证及WebApi权限验证流程的设计和实现(尾)

    5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy   /// /// Controller的基类,用于实现适合业 ...

  10. 正则化--Lambda

    模型开发者通过以下方式来调整正则化项的整体影响:用正则化项的值乘以名为 lambda(又称为正则化率)的标量.也就是说,模型开发者会执行以下运算: $$\text{minimize(Loss(Data ...