iphone nsurlconnection read cookies

2019-02-08 13:44发布

问题:

I am using async NSURLConnection to connect to a web site from iPhone. Handle didReceiveResponse is activated on response and I am trying to get all cookies, by using allHeaderFields from NSHTTPURLResponse

I see many hreader, but no Set-Cookie - it looks like iphone simulator just ignores them... And I am sure cookies are present in response - network monitor shows they present

I do not use any http storage - all that I am trying to do is to print to log all header - and do not see cookies info

Does anybody know about this issue?

UPDATE I have made some research: if my website returns custom header, like "Custom-Header: value" - then this header is visible in java client, but is not in iphone...

thanks

回答1:

Try to look for it in the shared HTTP cookies storage:

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]);
}

or if working in Swift:

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


回答2:

Try this: in your NSMutableURLRequest, you should tell it to handle cookies:

[request setHTTPShouldHandleCookies:YES];


回答3:

I don't know if it matters in apps, but what is your Accept Cookies setting for Safari in the Settings app. See if changing to Always matters.

According to some sites I've seen, a complete reboot of the iPhone is required for this setting to have any effect.