我正在尝试通过NSMutableURLRequest中的cookie发送身份验证字符串。我正在尝试通过
创建NSHTTPCookie +(id)cookieWithProperties:(NSDictionary *)properties
但是我无处可寻找如何指定除了我用于身份验证的简单键值对之外的属性。当我只使用我的键值对时,返回nil。
非常感谢任何关于此的示例,文档或想法。
答案 0 :(得分:38)
我注意到,在我的2.2.1 iphone上,如果未指定NSHTTPCookiePath,则cookie未创建,即使它在文档中显示为“可选”:
所以,我这样做:
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];
答案 1 :(得分:19)
这是您在cookie中设置属性的方法:
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
。
答案 2 :(得分:7)
我无法让它发挥作用。
然而,我得到了这个:NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
答案 3 :(得分:6)
我在jm的例子中发现了一个错误: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];
答案 4 :(得分:0)
键NSHTTPCookiePath
应该存在于字典中
[NSHTTPCookie cookieWithProperties:dictionary]
使用NSHTTPCookieDomain
还是NSHTTPCookieOriginURL
的方法。
NSHTTPCookiePath
的值应为@"/"
而不是@"\\"
。