Objective c 相当于“[NSMutableURLRequest HTTPShouldHandleCookies]的Restkit`

Objective c 相当于“[NSMutableURLRequest HTTPShouldHandleCookies]的Restkit`,objective-c,macos,cookies,restkit,nsurlrequest,Objective C,Macos,Cookies,Restkit,Nsurlrequest,我有两个不同方法的软件: 使用NSMutableURLRequest 使用 在1中。我有以下行: request.HTTPShouldHandleCookies = NO; 由于“方法1.”工作正常,我现在正在寻找使用RestKit的方法的等效方法。当我删除[nshttpcookeStorage sharedhttpcookeStorage]中的所有cookie时,我会得到相同的行为,如下所示: NSHTTPCookieStorage *cookieStorage = [NSHTTPCooki

我有两个不同方法的软件:

  • 使用
    NSMutableURLRequest
  • 使用
  • 1中。我有以下行:

    request.HTTPShouldHandleCookies = NO;
    
    由于“方法1.”工作正常,我现在正在寻找使用RestKit的方法的等效方法。当我删除
    [nshttpcookeStorage sharedhttpcookeStorage]
    中的所有cookie时,我会得到相同的行为,如下所示:

    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *cookie in cookieStorage.cookies)
    {
        [cookieStorage deleteCookie:cookie];
    }
    
    但是,此会删除系统范围内的所有Cookie,因此我会在浏览器中注销受影响的网站

    我现在正在寻找一种方法,用RestKit获得与HTTPShouldHandleCookies相当的
    HTTPShouldHandleCookies

    更新

    我正在使用RestKit,如下所示:

    [manager putObject: myObject path: path parameters:nil success:nil];
    

    使用
    NSHTTPCookieStorage
    ,您可以在决定删除每个cookie之前对其进行查询(使用
    domain
    /
    name
    )。通过这种方式,您可以只过滤您感兴趣的域的删除


    使用RestKit,您可以使用
    RKObjectManager
    创建
    NSURLRequest
    ,使用
    requestWithObject:method:path:parameters:
    (或一个相关方法),然后您可以修改请求并自己执行操作(可能使用RestKit操作).

    我现在找到了解决问题的方法**:

  • 从存储中删除cookie(保存cookie以备将来使用)
  • 正常情况下使用RestKit发出请求
  • 在任何完成块中将cookie重新添加到cookie存储
  • **然而,任何干净的解决方案都是非常受欢迎的,并且很乐意被标记为答案

    以下是我使用的方法:

    - (void) disableSessionCookie{
        NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        NSArray *cookiesToDelete = @[@"myspecial_session"];
    
        for (NSHTTPCookie *cookie in cookieStorage.cookies){
            if([cookie.domain rangeOfString:@"myspecialdomain"].location != NSNotFound){
                if([cookiesToDelete containsObject:cookie.name]){
                    self.sessionCookie = cookie;
                    [cookieStorage deleteCookie:cookie];
                }
            }
        }
    }
    
    - (void) enableSessionCookie{
    
        if(self.sessionCookie){
            [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:self.sessionCookie];
        }
    }
    

    我使用的不是请求,而是
    putObject
    (请参阅我的更新答案)。我想知道是否有一种方法可以在全球范围内或按经理设置。作为一种解决方法,我将尝试重新添加已删除的cookie,以便在发出请求后,我将再次登录。