Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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

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
Objective c 从NSHTTPURLResponse获取多个集Cookie头_Objective C_Cocoa_Foundation - Fatal编程技术网

Objective c 从NSHTTPURLResponse获取多个集Cookie头

Objective c 从NSHTTPURLResponse获取多个集Cookie头,objective-c,cocoa,foundation,Objective C,Cocoa,Foundation,我正在尝试访问http响应中发送的Set Cookie头: - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; NSDictionary *headers = [httpResponse allHeaderField

我正在尝试访问http响应中发送的
Set Cookie
头:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
    NSDictionary *headers = [httpResponse allHeaderFields];
    NSLog([headers description]);
}
HTTP服务器发送两个
Set Cookie
头,如下所示:

Set-Cookie: foo=1; httponly; Path=/
Set-Cookie: bar=2; httponly; Path=/
但是,该接口将多个
Set Cookie
头合并为一个逗号分隔的字符串:

"Set-Cookie" = "foo=1; httponly; Path=/, bar=2; httponly; Path=/"
证实了我的观察


是否有一个接口可以分别获取每个
设置Cookie
头或访问原始头?

iOS和macOS定义一个
NSHTTPCookie
类,该类可以解析并提供您要查找的信息:

NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields: [httpResponse allHeaderFields] forURL: [httpResponse url]];
NSArray*cookies=[NSHTTPCookie cookies with responseheaderfields:[httpResponse allHeaderFields]forURL:[httpResponse url]];

有关更多信息,请参阅适用于
NSHTTPCookie

我认为您必须手动执行:
NSArray*setCookiesHeaders=headers[@“Set Cookie”]组件通过字符串分离:@“,”]
,并对其进行解析以检索您的信息。问题是,值是字符串,而头是字典,因此每个值只能有一个键,而且显然它们与一个“,“如果它已经存在。用逗号分隔字符串是不够的,因为cookie本身可能也包含逗号。这不会提供所有cookie,这只会在请求域与响应cookie匹配时提供cookie。”。