2010-07-16 6 views
3

Я получаю доступ к защищенной информации сервера и отправляет кучу файлов cookie в приложение по запросу. Проблема в том, некоторые из куки только сессии, и когда я использую:Доступ к сеансовым файлам с помощью NSHTTPCookieStorage

[NSHTTPCookie requestHeaderFieldsWithCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:theCookie]] 

он не возвращает сессионные те, с именем JSESSIONID и вызывает вопросы. Если я NSLog полный NSHTTPCookieStorage, он отображает сессионные, чтобы они были там, я просто не могу найти способ извлечь их из хранилища. Кроме того, я просмотрел панель cookie, и файлы cookie сеанса не хранятся там, но я предполагаю, что это связано с тем, что они основаны на сеансах.

Любая помощь приветствуется.

Edit: Это фрагмент того, что я получаю, когда я прошу всех печенье:

<NSHTTPCookie version:0 name:@\"TheNameOfTheCookie\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196844.000000\" sessionOnly:TRUE domain:@\"THE URL\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]> 

<NSHTTPCookie version:0 name:@\"JSESSIONID\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196866.000000\" sessionOnly:TRUE domain:@\"The Same URL as above\" path:@\"/path\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]> 

Теперь, когда я прошу печенье на основе URL в вышеуказанном печенье, первый один получает возвращенный, вторые нет.

* обратите внимание, извините о том, чтобы удалить определенные элементы, они, как ожидается, и не имеют отношения к вопросу

+0

без фактических значений url или полученных значений (для моя часть 'tr/a-z/z-a /' them ...) мы можем только догадываться: может ли это быть проблемой случая? Некоторые веб-серверы не чувствительны к регистру, в то время как в остальном мире нет. Не могли бы вы привести самодостаточный пример, который показывает поведение? – mvds

+0

Ну, а не проблема с сервером, поскольку фактическое Cookie не возвращается из хранилища, я думаю, что это может быть проблема именования, поскольку есть несколько записей JSESSIONID. Я даже вручную ввел файл cookie с похожими данными, но с другим URL-адресом и не смог получить его. Имел одно и то же имя, JSESSIONID. – Rudiger

ответ

0

Пожалуйста ломаются вашу проблему на части, сначала проверьте, если

[[NSHTTPCookieStorage sharedHTTPCookieStorage] 
    cookiesForURL:[NSURL URLWithString:theCookie]] 

возвращает то, что вы подумайте, что он должен вернуться. Если нет, более подробно рассмотрите значение theCookie.

+0

У меня есть и я проверил, что я получаю через веб-браузер, по сравнению с тем, что я получаю через iPhone App, и его ожиданием, за исключением JSESSIONID. Я использую NSURLConnection для получения контента с нескольких разных сайтов. Каждый из которых я проверяю, я не получаю JSESSIONID, тогда как я делаю это через веб-браузер – Rudiger

+0

, это немного расплывчато, можете ли вы предоставить фрагмент кода и трассировку, показывающую, что вы видите? Например. полный cookiejar и фильтрованный cookieForUrl, включая URL.Таким образом, мы все можем видеть странность и могли бы объяснить или хотя бы воспроизвести ее. – mvds

+0

Обновлено, не ближе к выяснению. – Rudiger

0

Каков фактический URL-адрес, который вы передаете -cookiesForURL:? Если URL-адрес не имеет пути, соответствующего указанному в записи вашего файла JSESSIONID (например, http://example.com/path), метод -cookiesForURL: не вернет его.

2

У меня была эта проблема, причина в том, что NSHTTPCookieDomain. печенье должны иметь один и тот же домен

.... domain:@\"THE URL\" path:@\"/\" .... 
.... domain:@\"The Same URL as above\" path:@\"/path\" .... 

должен быть

.... domain:@\"NAME-DOMAIN" path:@"/" .... 

я просто изменить, и поставить тот же домен и путь и работает

Мой JSESSIONID:

<NSHTTPCookie version:0 name:"JSESSIONID" value:"7C9B0...........EB5" expiresDate:(null) created:2012-07-06 16:14:26 +0000 (3.63284e+08) sessionOnly:TRUE domain:"FOO" path:"/" isSecure:FALSE> 

 Смежные вопросы

  • Нет связанных вопросов^_^