संपादित करें: संपादित सवाल
NSHTTPCookieStorage
के लिए अनुकूल एक -setCookies:forURL:mainDocumentURL:
विधि है, ऐसा करने के लिए आसान बात NSURLConnection
का उपयोग करें और -connection:didReceiveResponse:
लागू, कुकीज़ निकालने और उन्हें कुकी जार में भरने है:
- (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 ];
}
(तुम भी बस properties
साथ NSHTTPCookie
से एक NSDictionary
वस्तु निकाल सकते हैं, और उसके बाद डिस्क के लिए शब्दकोश में लिखें। यह पढ़ना पीठ में का उपयोग कर के रूप में के रूप में आसान है । NSDictionary
के -dictionaryWithContentsOfFile:
और फिर -initWithProperties:
साथ कुकी बनाने)
तो फिर तुम कुकी वापस भंडारण से बाहर खींच सकते हैं जब आपको उसकी आवश्यकता:
- (void)reloadWebview: (id)sender
{
NSArray *cookies;
NSDictionary *cookieHeaders;
NSMutableURLRequest *request;
cookies = [[ NSHTTPCookieStorage sharedHTTPCookieStorage ]
cookiesForURL: self.url ];
if (!cookies) {
/* kick off new NSURLConnection to retrieve new auth cookie */
return;
}
cookieHeaders = [ NSHTTPCookie requestHeaderFieldsWithCookies: cookies ];
request = [[ NSMutableURLRequest alloc ] initWithURL: self.url ];
[ request setValue: [ cookieHeaders objectForKey: @"Cookie" ]
forHTTPHeaderField: @"Cookie" ];
[ self.webView loadRequest: request ];
[ request release ];
}
स्रोत
2011-05-10 19:01:44
एनएसएचटीटीपीकी स्टोरेज निश्चित रूप से एक सतत कुकी स्टोरेज को पूरी तरह कार्यान्वित करता है। यह सर्वर-साइड पर कुकी जीवनकाल को सही ढंग से सेट करने का मामला है। – Till
हां यह एक सतत कुकी भंडारण को लागू करता है। केवल समस्या यह विफल हो जाती है जब ऐप कुकी सेट होने के तुरंत बाद छोड़ देता है। – kball
बॉल, हम इस समाधान के साथ जा रहे हैं जो आपके उत्तर के बहुत करीब है: http://lists.apple.com/archives/Webkitsdk-dev/2003/Sep/msg00003.html –