无法在NSURLRequest中设置Cookie

时间:2012-08-05 19:29:43

标签: objective-c xcode cookies nsurlconnection nsurlrequest

在我的程序中,我调用两个函数,第一个是登录,第二个是解析数据的函数。

要存储会话,使用登录功能我保存我的cookie:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];
    if(connection == conn_login){
        NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
        NSDictionary *fields = [HTTPResponse allHeaderFields];
        cookie = [fields valueForKey:@"Set-Cookie"];
    }
}

一切都很好,当我打印cookie时:

userid=1; expires=Mon, 05-Aug-2013 19:22:18 GMT; path=/; domain=www.mydomain.com

“userid = 1”是我感兴趣的。

所以在我解析数据的NSURLRequest中,我喜欢这样设置保存的cookie:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL
URLWithString:@"http://www.mydomain.com/?getList"]];
[request setValue:cookie forHTTPHeaderField:@"Set-Cookie"];

但它不起作用。我之前的cookie没有设置,即使打印出第二个请求的完整标题,也没有“用户ID”或任何其他。

我做错了什么?谢谢大家。

1 个答案:

答案 0 :(得分:0)

我认为你必须使用这行代码......如果你有疑问请告诉我

NSArray *cookies1 = [[ NSHTTPCookieStorage sharedHTTPCookieStorage] cookies ];

NSDictionary *cookieHeaders;

cookieHeaders = [ NSHTTPCookie requestHeaderFieldsWithCookies: cookies1];

[request setValue: [cookieHeaders objectForKey: @"Cookie" ]forHTTPHeaderField:@"Cookie" ];