2010-07-23 15 views
12

Używam asynchronicznego NSURLConnection do połączenia z witryną internetową z iPhone'a. Uchwyt didReceiveResponse jest aktywowany na odpowiedzi, a ja staram się uzyskać wszystkie pliki cookie, korzystając allHeaderFields z NSHTTPURLResponseiphone nsurlconnection czytaj ciasteczka

widzę wiele hreader, ale nie Set-Cookie - wygląda na to, Symulator iPhone prostu ignoruje je ... I jestem pewien, że ciasteczka są obecne w odpowiedzi - monitor sieci pokazuje, że przedstawienie

nie używam żadnych przechowywanie http - wszystko, co próbuję zrobić, to wydrukować do logowania wszystko nagłówek - i nie widzą ciasteczka informacji

Does ktoś wie o tym problemie?

UPDATE Zrobiłem rozeznanie: czy moja strona zwraca niestandardowy nagłówek, jak "custom-header: wartości" - to ten nagłówek jest widoczny w kliencie java, ale nie jest w iPhone ...

dziękuje

Odpowiedz

0

Nie wiem, czy ma to znaczenie w aplikacjach, ale jakie jest ustawienie Akceptuj pliki cookie w przeglądarce Safari w aplikacji Ustawienia. Sprawdź, czy zmiana na Zawsze ma znaczenie.

Zgodnie z niektórymi witrynami, które widziałem, wymagany jest całkowity restart iPhone'a, aby to ustawienie miało jakikolwiek wpływ.

+0

Używam symulatora i nie używam automatycznego przechowywania plików cookie. Chcę tylko zobaczyć surowe nagłówki http - i widzę je wszystkie, ale Cookie – user349302

3

Spróbuj tego: w NSMutableURLRequest, należy poinformować go do obsługi ciasteczek:

[request setHTTPShouldHandleCookies:YES]; 
+0

Mam tę linię, wciąż nie ma ciasteczek (zarówno TAK/NIE). Dziwne jest to, że widzę wszystkie nagłówki, ale ciasteczka ... i chcę je tylko zobaczyć i obsłużyć myslef – user349302

+0

Gdzie to ustawiasz? Myślę, że powinno to nastąpić, zanim ustawisz inne wartości na żądanie. Ponadto, zob. http://www.cocoadev.com/index.pl?ParsingHTTPHeaders – Don

+0

tak, nazywam go zaraz po inicjalizacji żądania. W każdym razie: pytanie dotyczy nie tylko plików cookie - chciałbym zobaczyć WSZYSTKIE nagłówki i system tego nie robią (zobacz moją aktualizację w początkowym wpisie) – user349302

27

Spróbuj spojrzeć na to w pamięci współdzielonej ciasteczka http:

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

lub jeśli pracuje w Swift :

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

to właśnie sprawiło, że mój dzień, dzięki! –

+0

również moje. fantastyczna odpowiedź. Dziękuję bardzo – Katushai