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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//创建一个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的值
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
]);
|
加