Bearbeiten: Anpassung an bearbeitete Frage
NSHTTPCookieStorage
hat eine -setCookies:forURL:mainDocumentURL:
Methode, daher ist es einfach , Cookies zu verwenden NSURLConnection
und zu implementieren -connection:didReceiveResponse:
, sie zu extrahieren und in die Keksdose zu füllen:
- ( void )connection: (NSURLConnection *)connection
didReceiveResponse: (NSURLResponse *)response
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSArray *cookies;
cookies = [ NSHTTPCookie cookiesWithResponseHeaderFields:
[ httpResponse allHeaderFields ]];
[[ NSHTTPCookieStorage sharedHTTPCookieStorage ]
setCookies: cookies forURL: self.url mainDocumentURL: nil ];
}
(Sie können auch einfach ein NSDictionary
Objekt aus dem NSHTTPCookie
with extrahieren properties
und dann das Wörterbuch auf die Festplatte schreiben. Das Einlesen ist so einfach wie das Verwenden von NSDictionary
's -dictionaryWithContentsOfFile:
und das anschließende Erstellen des Cookies mit -initWithProperties:
.)
Dann können Sie den Cookie bei Bedarf wieder aus dem Speicher ziehen:
- ( void )reloadWebview: (id)sender
{
NSArray *cookies;
NSDictionary *cookieHeaders;
NSMutableURLRequest *request;
cookies = [[ NSHTTPCookieStorage sharedHTTPCookieStorage ]
cookiesForURL: self.url ];
if ( !cookies ) {
return;
}
cookieHeaders = [ NSHTTPCookie requestHeaderFieldsWithCookies: cookies ];
request = [[ NSMutableURLRequest alloc ] initWithURL: self.url ];
[ request setValue: [ cookieHeaders objectForKey: @"Cookie" ]
forHTTPHeaderField: @"Cookie" ];
[ self.webView loadRequest: request ];
[ request release ];
}