【发布时间】:2013-10-04 16:25:51
【问题描述】:
我有一个非常奇怪的问题,我正在请求一个 URL,我想从中获取 cookie,我使用这种方式获取 cookie:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSDictionary *fields = [HTTPResponse allHeaderFields];
NSString *cookie = [fields valueForKey:"Set-Cookie"];
}
但是 cookie 不完整,缺少某些字段,我在 PostMan 上检查过,所有 cookie 都在那里。
我在启动NSURLRequest时也使用了这种方法。
[request setHTTPShouldHandleCookies:YES];
问题出在哪里?
注意:这个问题在 iOS 上,我有一个 android 版本,它工作正常,所有的 cookie 都在那里。
【问题讨论】:
-
获取 Charles Proxy(免费一个月)并查看服务器发送的确切内容。
-
@Zaph 我已经在android应用程序上测试了服务器,所有的cookies都出现了,但是在iOS中,有一些cookies丢失了。
-
NSHTTPCookieStorage是一个可能的解决方案。但是,除了查看服务器发送的确切内容之外,没有其他替代方法。也许服务器正在键入用户代理并发送不同的 cookie 或其他东西。 Charles 易于使用,甚至可以使用 SSL。 -
@Zaph 我已经在 Charles Proxy 上测试了该服务,请求包含我应该获得的所有 cookie。
-
我遇到了同样的问题,@vn_serg 给出的解决方案效果很好
标签: objective-c cookies nsurlrequest nshttpurlresponse