3

首先,该应用程序会打开一个 UIWebView 到我网站上的登录页面,成功登录后,webview 将关闭。我需要请求一个 url,它会返回一个非常小的 json 数据。如果我要使用 webview 启动此 url,则会返回正确的数据,因此假设登录会话仍然存在(如果不是,它将再次重定向到登录页面)

我需要在另一个视图中返回的数据而不是 web 视图,因此我需要使用 NSURLRequest 来访问它。在爬了一个晚上的stackoverflow之后,以下是我所拥有的:

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:
                          [cookieJar cookies]];
[request setAllHTTPHeaderFields:headers];

NSError * e;
NSData  *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&e];

在检查返回的数据(包括登录页面源而不是预期的 json 数据)后,我可以得出结论,cookie 没有发送,需要建议。

编辑:我做了 [request allHTTPHeaderField] 的输出,它显示 NSHTTPCookieStorage 中的所有可用 cookie 都已附加到请求中。所以......我真的迷失了我应该如何进行。

4

1 回答 1

1

您不需要明确设置 cookie。NSURLConnection 会自动为您执行此操作。

您是否尝试在 webview 关闭后打印出 cookie?

  [[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    NSLog(@"%@", obj);
  }];
于 2012-12-03T13:30:53.660 回答