2

我想问一些关于我正在尝试制作的一段代码的一些事情,而之前没有与 ios 或 Objective-c 有任何联系。这段代码将:

  1. 打开具有特定 URL 的 WebView,用户将在其中登录(完成)
  2. 用户登录后,它将获取从该登录创建的 cookie。
  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 语法似乎有点混乱。

4

2 回答 2

5

我通过遵循此https://www.inkling.com/read/learning-ios-programming-alasdair-allan-2nd/chapter-7/embedding-a-web-browser-in-your找到了解决方案。使用 webViewDidFinishLoad 委托并使用 cookiesForURL 方法从那里获取 cookie。

NSArray* availableCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@"MYURL"]];
于 2013-06-18T09:53:37.823 回答
1

Cookie 的创建方式如下,

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


NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

您可以使用 cookie 对象来获取源 URL 属性和过滤器。

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

过滤您需要的 cookie 后,您可以使用以下方法获取 cookie 值,

cookie.value
于 2013-06-04T09:13:56.157 回答