2013-02-16 81 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