【发布时间】:2012-11-26 21:17:03
【问题描述】:
我正在使用AFNetworking 从一个共享的“身份验证器”类发出 POST 请求,该类传入用户的用户名和密码。这是我发出的 POST 请求:
NSURL *url = [NSURL URLWithString:@"https://www..."];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
// params
NSDictionary* dict = @{@"loginName": username,
@"password": password,
@"serviceName": @"...",
@"serviceURL": @"...",
@"action": @"..."};
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
request = [httpClient requestWithMethod:@"POST" path:@"..." parameters:dict];
request.cachePolicy = NSURLRequestReloadIgnoringCacheData;
request.timeoutInterval = 30.0;
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", operation.responseString);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"login failed");
}];
[operation start];
第一次登录时效果很好,一切都按预期返回。当我尝试使用不同的用户名/密码登录时,我看到operation.responseString 的输出与第一次登录的输出完全相同。
有谁知道为什么它会返回第一次登录的输出?感觉响应是缓存响应,为了防止缓存信息返回,我加了如下内容:
request.cachePolicy = NSURLRequestReloadIgnoringCacheData;
我已经设置断点查看NSDictionary中的用户名和密码为参数是新的用户名/密码组合。
字符串文字无论如何也不会被操纵,并且在每个 POST 请求中都是相同的。省略号用于保护隐私,是具有语义含义的字符串的占位符。
【问题讨论】:
标签: ios caching post afnetworking