iPhone的NSURLConnection如何读取cookies

12
我正在使用异步 NSURLConnection 从 iPhone 连接到一个网站。在响应中,Handle didReceiveResponse 被激活,并且我正在尝试通过使用 NSHTTPURLResponse 的 allHeaderFields 获取所有 cookie。
我看到许多 header,但没有 Set-Cookie - 看起来 iPhone 模拟器只是忽略它们... 而我确定 cookies 存在于响应中 - 网络监视器显示它们存在。
我没有使用任何 http 存储 - 我所要做的就是将所有 header 打印到日志中 - 并没有看到 cookies 信息。
有人知道这个问题吗?
更新: 我进行了一些研究:如果我的网站返回自定义头,比如“Custom-Header: value” - 那么这个头在 java 客户端中是可见的,但在 iPhone 中不可见...
谢谢
3个回答

27

尝试在共享的HTTP Cookies存储中查找:

for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies])
{
    NSLog(@"name: '%@'\n",   [cookie name]);
    NSLog(@"value: '%@'\n",  [cookie value]);
    NSLog(@"domain: '%@'\n", [cookie domain]);
    NSLog(@"path: '%@'\n",   [cookie path]);
}

或者在使用Swift时:

for cookie in HTTPCookieStorage.shared.cookies!
{
   NSLog("name: \(cookie.name)")
   NSLog("value: \(cookie.value)")
   NSLog("domain: \(cookie.name)")
   NSLog("path: \(cookie.path)")
}

3
尝试这样做:在您的NSMutableURLRequest中,应告诉它处理cookies。
[request setHTTPShouldHandleCookies:YES];

我有这行代码,但是没有cookies(无论是YES还是NO)。奇怪的是,我可以看到所有的头信息,但是却没有cookies……我只想看到它们,并自己处理。 - user349302
你在哪里设置这个?我认为应该在请求中设置任何其他值之前。另外,参见http://www.cocoadev.com/index.pl?ParsingHTTPHeaders。 - Don
是的,我在请求初始化后立即调用它。 无论如何:这个问题不仅涉及到cookies - 我想看到所有的头信息,但系统没有提供(请参见我在初始帖子中的更新)。 - user349302

0

我不知道在应用程序中是否有影响,但是您在设置应用程序中的Safari接受Cookie设置是什么。看看改为始终是否有影响。

根据我看到的一些网站,需要完全重新启动iPhone才能使此设置生效。


我正在使用模拟器,不使用自动 cookie 存储。我想要的只是查看原始的 HTTP 标头 - 我可以看到所有的标头,但 Cookie 没有显示。 - user349302

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接