2013-06-04 3 views
1

Я хотел спросить кое-что о куске кода, который я пытаюсь сделать, не имея никакого предыдущего контакта с ios или объективом-c. Этот фрагмент кода будет:Cookie from ios webview

  1. Открыть WebView с конкретным URL, где пользователь будет войти на форум (сделано)
  2. После входа пользователя в нем будут принимать куки создан от этого входа.
  3. Он будет использовать этот файл cookie в следующем запросе до . Загрузите другой сайт, требующий аутентификации.

Я застрял в части 2, потому что он должен: a) ждать в другом потоке, пока пользователь не выполнит вход (как?) И b), потому что я не могу получить конкретный файл cookie для сайт легко. Я только нашел и попробовал этот poc, но как отфильтровать только cookie для сайта, который я хочу?

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for(cookie in [cookieJar cookies]) { 
    NSLog(@"%@", cookie); 
} 

Любые идеи о том, как сделать 2a/b детали? Синтаксис Objective-c кажется немного запутанным.

ответ

1

Cookies создаются следующим образом,

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: 
          url, NSHTTPCookieOriginURL, 
          @"testCookies", NSHTTPCookieName, 
          @"1", NSHTTPCookieValue, 
          nil]; 


NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties]; 

Вы можете использовать объект куки, чтобы получить атрибут происхождения URL и фильтр.

NSDictionary *cookieProperties = [cookie properties]; 
NSURL *originURL = [cookieProperties objectForKey:NSHTTPCookieOriginURL]; 

После фильтрации печенья вам нужно, вы можете получить значение куки, используя,

cookie.value 
+1

Но я знаю исходный url. Мне просто нужны данные cookie, которые были созданы после входа в этот URL-адрес. Это в основном идентификатор сеанса. – cyph3r

+0

Хорошо, Обновлен ответ. NSHttpCookie класс много свойств. Вы можете посмотреть ссылку – Vignesh

+0

. Вы можете это сделать. Но я предпочел бы начать свой поток после входа пользователя в систему. Вы можете опубликовать уведомление или использовать механизм делегата для информирования о событии. – Vignesh