tutorial framework iphone cocoa cocoa-touch

iphone - framework - Crear una cookie para NSURLRequest?



cocoa touch framework (5)

Así es como se configuran las propiedades en una cookie:

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

En el ejemplo anterior: url , testCookies y 1 son los valores . Del mismo modo, NSHTTPCookieOriginURL , NSHTTPCookieName , NSHTTPCookieValue son las claves para el objeto NSDictionary , como en los pares clave-valor .

Usted establece / obtiene propiedades usando NSDictionary y agrega a NSHTTPCookie .

Estoy intentando enviar una cadena de autenticación a través de una cookie en un NSMutableURLRequest. Estoy tratando de crear el NSHTTPCookie a través de

+(id)cookieWithProperties:(NSDictionary *)properties

Pero en ninguna parte he podido encontrar cómo especificar las propiedades que no sean el simple par clave-valor que tengo para la autenticación. Cuando solo uso mi par clave-valor, devuelve nil.

Cualquier ejemplo, documentación o pensamiento sobre esto sería muy apreciado.


He encontrado un error en el ejemplo de jm: NSHTTPCookiePath debería ser @"/" , pero no @"////" .

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];


No pude conseguir que funcione.

Tengo esto para trabajar sin embargo:

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


Noté en mi iPhone 2.2.1 que la cookie no se creó si no se especifica NSHTTPCookiePath, aunque se muestra como "opcional" en la documentación:

Así que hago:

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];


la clave NSHTTPCookiePath debería existir en el diccionario cuando se usa

[NSHTTPCookie cookieWithProperties:dictionary]

método ya sea utilizando NSHTTPCookieDomain o NSHTTPCookieOriginURL . Y el valor para NSHTTPCookiePath debe ser @"/" no @"//" .