Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何为NSHTTPURLRResponse获取正确的设置Cookie头?_Cocoa_Macos_Nsurlconnection_Setcookie - Fatal编程技术网

Cocoa 如何为NSHTTPURLRResponse获取正确的设置Cookie头?

Cocoa 如何为NSHTTPURLRResponse获取正确的设置Cookie头?,cocoa,macos,nsurlconnection,setcookie,Cocoa,Macos,Nsurlconnection,Setcookie,我想使用以下代码登录一个网站,该网站以以下方式返回其cookie信息: Set-Cookie: 19231234 Set-Cookie: u2am1342340 Set-Cookie: owwjera 我使用下面的代码登录到该站点,但是最后的print语句没有输出任何关于“set cookie”的内容。 在Snow leopard上,库似乎会自动获取此站点的cookie,随后发送的连接设置了正确的“cookie”标题。但是在leopard上,它不是这样工作的,所以这是“记住特定根url的coo

我想使用以下代码登录一个网站,该网站以以下方式返回其cookie信息:

Set-Cookie: 19231234
Set-Cookie: u2am1342340
Set-Cookie: owwjera
我使用下面的代码登录到该站点,但是最后的print语句没有输出任何关于“set cookie”的内容。 在Snow leopard上,库似乎会自动获取此站点的cookie,随后发送的连接设置了正确的“cookie”标题。但是在leopard上,它不是这样工作的,所以这是“记住特定根url的cookie”行为的触发器吗

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:uurl]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"keep-live" forHTTPHeaderField:@"Connection"];
[request setValue:@"300" forHTTPHeaderField:@"Keep-Alive"];
[request setHTTPShouldHandleCookies:YES];

[request setHTTPBody:postData];
[request setTimeoutInterval:10.0];

NSData *urlData;
NSHTTPURLResponse *response;
NSError *error;
urlData = [NSURLConnection sendSynchronousRequest:request
                                returningResponse:&response
                                            error:&error];

NSLog(@"response dictionary %@",[response allHeaderFields]);

这行代码使系统为您处理cookies。

由于我没有leopard环境,我的应用程序的leopard用户告诉我,即使我包含了此[request setHTTPShouldHandleCookies:YES];,它也无法工作;。那一部分,我无法解释。HTTPShouldHandleCookies至少在10.5和10.6上设置为YES,我认为回到10.2左右,设置和发送的cookie应该是Safari使用的同一个cookie存储。我将[request setHTTPShouldHandleCookies:YES]放在set语句的顶部,它可以工作,我想知道为什么。:)无论如何谢谢你@Isaac>“来自Safari使用的同一cookie存储”:请注意,沙盒Mac App store应用程序将不再获取这些cookie。
[request setHTTPShouldHandleCookies:YES];