2009-03-27 17 views
23

मैं एक NSMutableURLRequest में कुकी के माध्यम से एक प्रमाणीकरण स्ट्रिंग भेजने की कोशिश कर रहा हूं। मैंNSURLRequest के लिए एक कुकी बनाएँ?

+(id)cookieWithProperties:(NSDictionary *)properties 

के माध्यम से NSHTTPCookie बनाने के लिए कोशिश कर रहा हूँ लेकिन कहीं नहीं मैं सरल कुंजी-मान पेयर मैं प्रमाणीकरण के लिए है के अलावा अन्य गुण निर्दिष्ट करने के लिए कैसे पता लगाने के लिए सक्षम है। जब मैं केवल अपनी कुंजी-मूल्य जोड़ी का उपयोग करता हूं, तो शून्य वापस आ जाता है।

इस पर कोई भी उदाहरण, दस्तावेज़ीकरण या विचारों की बहुत सराहना की जाएगी।

+0

कृपया कोड बनाने के लिए आप जिस कोड का उपयोग कर रहे हैं उसे पोस्ट करें; क्या आपने http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSHTTPCookie_Class/Reference/Reference.html#//apple_ref/doc/uid/20001702-425346 – sbooth

उत्तर

19

इस तरह आप एक कुकी में गुण सेट है:

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: 
           url, NSHTTPCookieOriginURL, 
           @"testCookies", NSHTTPCookieName, 
           @"1", NSHTTPCookieValue, 
           nil]; 
    NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties]; 

ऊपर के उदाहरण में: url, testCookies, और 1मूल्यों हैं। इसी तरह, NSHTTPCookieOriginURL, NSHTTPCookieName, NSHTTPCookieValueकुंजी NSDictionary वस्तु के लिए, कुंजी-मान जोड़ों में के रूप में कर रहे हैं।

आप NSDictionary का उपयोग करके गुण सेट/प्राप्त करते हैं और NSHTTPCookie पर जोड़ें।

+4

पर एक नज़र डाली है वास्तव में मैं नहीं था इसे काम करने में सक्षम, केवल NSHTTPCookieDomain, और NSHTTPCookiePath के साथ। जेएम का जवाब देखें। इसके अलावा: http://lists.apple.com/archives/Webkitsdk-dev/2003/Sep/msg00003.html – mfazekas

+0

मैं NSHTTPCookieOriginURL का उपयोग करने में सक्षम था जब तक मैं * * निर्दिष्ट NSHTTPCookiePath (संकेत के लिए नीचे जेएम के लिए धन्यवाद) । ध्यान दें कि आप मूल्य प्रदान करने के लिए यूआरएल पर पथ विधि का उपयोग कर सकते हैं (यानी [यूआरएल पथ])। –

37

मैं पर देखा है, मेरे 2.2.1 iphone पर, कि कुकी अगर NSHTTPCookiePath निर्दिष्ट नहीं है बनाया नहीं जा सके थे, भले ही यह डॉक्स में के रूप में "वैकल्पिक" दिखाया गया है:

तो, मुझे क्या करना :

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"domain.com", NSHTTPCookieDomain, 
          @"/", NSHTTPCookiePath, // IMPORTANT! 
          @"testCookies", NSHTTPCookieName, 
          @"1", NSHTTPCookieValue, 
          nil]; 
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties]; 

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil]; 

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; 

[request setAllHTTPHeaderFields:headers]; 
7

मैं इसे काम नहीं कर सका।

NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL]; 
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
6

मैं जेएम के उदाहरण में एक गलती मिल गया है: NSHTTPCookiePath @"/", लेकिन नहीं @"\\\\" होना चाहिए

मैं इस हालांकि काम करने के लिए मिला है।

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"domain.com", NSHTTPCookieDomain, 
          @"/", NSHTTPCookiePath, // IMPORTANT! 
          @"testCookies", NSHTTPCookieName, 
          @"1", NSHTTPCookieValue, 
          nil]; 
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties]; 

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil]; 

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; 

[request setAllHTTPHeaderFields:headers]; 
+0

मैंने अपना जवाब अपडेट किया। उचित लगता है, हालांकि मेरे पास अब परीक्षण करने के लिए एक आईफोन नहीं है। –

0

कुंजी NSHTTPCookiePath शब्दकोश में मौजूद जब NSHTTPCookieDomain या NSHTTPCookieOriginURL का उपयोग कर कि क्या

[NSHTTPCookie cookieWithProperties:dictionary] 

विधि का उपयोग करना चाहिए। और NSHTTPCookiePath के लिए मूल्य @"/"@"\\" होना चाहिए।

संबंधित मुद्दे