使用AFNetworking重置基本身份验证凭据

8
我正在编写一个REST客户端(使用AFNetworking),需要在单个应用程序实例中触发新会话的创建。换句话说,我想要:
1 - 与服务器进行身份验证
2 - 进行一些REST调用
3 - 模拟“注销”
4 - 重新与服务器进行身份验证
5 - 进行更多的REST调用

AFNetworking很擅长进行初始身份验证和REST调用,但我无法弄清楚如何在同一实例中清除会话并“重置”连接。

当我使用ASIHTTP时,我只需执行:
[ASIHTTPRequest clearSession];

是否有一种类似于AFNetworking的方式来做到这一点?
3个回答

9

使用AFHTTPClient(请参见示例项目中的API客户端)。

可以使用-setAuthorizationHeaderWithUsername:password:设置凭据。从该HTTP客户端创建的每个请求都将具有类似于浏览器会话的Authorization HTTP标头。

当用户注销或者您想要清除凭据时,请执行-clearAuthorizationHeader


2
更加简单易懂。
[request setHTTPShouldHandleCookies:NO];

1
据我所知,Rest调用不是基于会话的。这意味着您无法在特定调用中模拟身份验证和注销会话。我认为您可以做的是对每个调用端点进行身份验证。因此,对于每个端点(方法),您都要对调用者进行身份验证。我认为这是在Restful系统中能做到的最好的事情。

8
我玩了一下,似乎清除Cookie缓存对我有用:NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies = [cookieStorage cookies]; for (NSHTTPCookie *cookie in cookies) { [cookieStorage deleteCookie:cookie]; NSLog(@"已删除Cookie"); } - user1174179
1
这个cookie提示非常有用。谢谢。 - Keller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接