假設你有一個NSHTTPURLResponse,你可以得到的Cookie的數組,像這樣:
NSDictionary * headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSArray * cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:response.URL];
哪裏response
是NSHTTPURLResponse。
你會得到NSURLResponses在NSURLConnectionDelegate
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
NSHTTPCookie的這2種方法有properties
屬性,它返回一個NSDictionary
,這樣你就可以保存它們。 然後可以使用-initWithProperties:
使用相同字典創建它們要發送它們,您需要爲NSURLRequest
的Cookie標頭創建自己的字符串。 喜歡的東西:
NSMutableString * cookieString = [[NSMutableString alloc] init];
for (NSHTTPCookie * cookie in myLoadedCookies){
[cookieString appendFormat:@"%@=%@; ", cookie.name, cookie.value];
}
[request setValue:cookieString forHTTPHeaderField:@"Cookie"];
[cookieString release];
凡request
是NSMutableURLRequest
。
你也應該確保停止的iOS管理cookie本身:
[request setHTTPShouldHandleCookies:NO];
您可以自行保存併發送餅乾。 –
是的,但iOS是否提供這種機制? – Hlung
有點兒。如果你有一個NSHTTPURLResponse,你可以通過NSHTTPCookie的cookiesWithResponseHeaderFields:forURL:方法得到NSArray的NSHTTPCookies。然後發送它們,你只需要自己創建Cookie:頭。我會在答案中發佈更多細節。 –