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 @"//"
.