2013-02-16 54 views
23

我正在构建一个使用Google App Engine作为后端的iOS应用程序。 Google提供了一个存储身份验证Cookie的HTML登录网站。如果我在UIWebView中访问该网站,并且用户登录,那么这些Cookie是否会存储在NSURLConnection向同一站点发出请求时将被拾取的位置?UIWebView和NSURLConnection共享cookie存储吗?

+0

感谢登录后创建的cookie。我一直在试图找出一种方法来问这个问题约10分钟。 – 2015-03-24 17:33:12

+1

@Yar:很高兴你找到了! – Linuxios 2015-03-24 17:33:55

回答

22

UIWebView的cookie将存储在可通过NSHTTPCookieStorage sharedHTTPCookieStorage]访问的沙盒cookie存储中。您可以以这种方式使用NSURLConnection的这个cookie存储:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@"__YOUR_URL__"]]; 
NSDictionary *headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; 
[request setAllHTTPHeaderFields:headers]; //A previously created NSMutableURLRequest 

现在可以正常使用的NSURLRequest一个NSURLConnection的,它会发送在UIWebView中

+0

我是否会将“YOUR_URL”替换为页面的URL或域名? – Linuxios 2013-03-13 23:24:19

+0

在你的情况下用'.google.com'替换YOUR_URL应该没问题,一般来说就是匹配cookie的域字段的url。如果您不知道确切的网址('.google.com'是否与所有google.com子域名匹配),则可以通过以下方式获取cookie存储中的所有Cookie:'[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]'。服务器可能会简单地忽略不适合他的cookies(如果有其他人)。 – 2013-03-14 11:50:37

+0

那么'.google.com'是用于'google.com'还是所有子域?确切地说, – Linuxios 2013-03-14 13:32:43