NSHTTPURLResponse があると仮定すると、次のような Cookie の配列を取得できます。
NSDictionary * headers = [(NSHTTPURLResponse *)response allHeaderFields];
NSArray * cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:response.URL];
response
NSHTTPURLResponse はどこにありますか。
NSURLConnectionDelegate のこれら 2 つのメソッドで NSURLResponses を取得します。
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
NSHTTPCookie にはproperties
を返すプロパティがあるNSDictionary
ので、それらを保存できます。その後、同じ辞書を使用して作成できます-initWithProperties:
それらを送信するには、 の Cookie ヘッダー用に独自の文字列を作成する必要がありますNSURLRequest
。何かのようなもの:
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];