0

我有一个浏览器应用程序,用于输入特定站点。

这个站点(我不拥有)有一个仅在 iOS6 中相关的错误。登录该站点后,如果您尝试运行该应用程序并再次登录,则会失败。

在 safari 中,如果我在第二次尝试之前删除了 cookie,它会起作用。但是当我使用 UIWebView 时,当我尝试打印 cookie 时,它​​们看起来好像被删除了,但登录仍然失败。

我使用此代码删除 cookie:

 NSHTTPCookie *cookie;
 NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
 for (cookie in [cookieStorage cookies]) {
     [cookieStorage deleteCookie:cookie];
     NSLog(@"delete Cookie. Name: %@ : , domain: %@", cookie.name, cookie.domain);
 }

它不会发生在 iOS5 上。

有任何想法吗?

4

3 回答 3

1

可能是......你不应该删除“for”中的对象。我想有时你会崩溃。您应该在“for”中标记一些对象并删除对象示例:

NSMutableArray *arrayObject = [NSMutableArray 数组];

NSMutableArray *deleteArray = [NSMutableArray 数组];

for (Someobject *object in arrayObject) {
    [deleteArray addObject:object];
}
[arrayObject removeObjectsInArray:deleteArray];
于 2013-01-04T07:16:47.973 回答
0
NSArray *newCookie = [NSArray arrayWithArray:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];

for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
for (NSHTTPCookie *cookie in newCookie) {
    NSMutableDictionary *properties = [NSMutableDictionary dictionaryWithDictionary:cookie.properties];
    [properties removeObjectForKey:NSHTTPCookieExpires];
     NSHTTPCookie *changeCookie = [NSHTTPCookie cookieWithProperties:properties];
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:changeCookie];

此代码适用于 iOS5 和 iOS6。我检查了。我认为问题在于:NSLog在最后一个对象中会显示什么?

于 2013-01-04T11:37:04.943 回答
0

我用这个:

NSHTTPCookieStorage *storage = NSHTTPCookieStorage.sharedHTTPCookieStorage;
while (storage.cookies.count > 0) {
    [storage deleteCookie:storage.cookies.lastObject];
}
于 2019-01-18T10:35:56.277 回答