2012-01-27 2 views
8

Я пишу клиента REST (с AFNetworking) и нуждаюсь в возможности инициировать создание нового сеанса в одном экземпляре приложения.

Другими словами, я хотел бы:
1 - Аутентифицировать с сервером
2 - У некоторых REST вызывает
3 - Имитировать "Выйти"
4 - Re-аутентификации сервера
5 - У некоторых больше вызовов REST

AFNetworking отлично справляется с выполнением первоначальной проверки подлинности и вызовов REST, но я не могу понять, как я очистил сессию и «сбросил» соединение в том же экземпляре.

Когда я использовал ASIHTTP, я только что сделал:
[ASIHTTPRequest clearSession];

Есть ли способ сделать что-то подобное с AFNetworking?

Сброс базовых учетных данных с помощью AFNetworking

ответ

1

Звонки на отдых, насколько я знаю, не основаны на сеансе. Это означает, что вы не можете имитировать сеанс аутентификации и выхода в конкретный вызов. Я думаю, что вы можете сделать это для аутентификации для каждого звонка, сделанного в конечную точку. Поэтому для каждой конечной точки (метода) вы аутентифицируете вызывающего абонента. Я думаю, что это ставки, которые вы можете сделать в спокойной системе.

+8

хмм я играл с ним немного больше, и это выглядит как очистка кэша печенья, кажется, делает трюк для меня .: NSHTTPCookieStorage * cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray * cookies = [cookieStorage cookies]; для (NSHTTPCookie * cookie в файлах cookie) { [cookieStorage deleteCookie: cookie]; NSLog (@ "удаленный файл cookie"); } – user1174179

+1

Этот кончик cookie был действительно полезен. Благодарю. – Keller

+0

Очистка файлов cookie также была тем, что я искал. – Harpastum

9

Используйте AFHTTPClient (см. Клиент API в примере проекта).

Учетные данные могут быть установлены с помощью -setAuthorizationHeaderWithUsername:password:. Каждый запрос, созданный из этого HTTP-клиента, будет содержать HTTP-заголовок Authorization, вроде сеанса браузера.

Когда пользователь выйдет из системы или вы хотите удалить учетные данные, выполните -clearAuthorizationHeader.

2

Еще проще.

[request setHTTPShouldHandleCookies:NO]; 
Смежные вопросы