我使用AFNetworking從共享的「authenticator」類發出POST請求,該請求傳遞用戶的用戶名和密碼。這裏是我提出的POST請求:POST請求返回不需要的緩存結果(AFNetworking)
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請求中也不會被操縱。 elipses是隱私的,並且是具有語義含義的字符串的佔位符。
我還是找回了相同的結果。這看起來非常有希望,但我仍然困惑,爲什麼它不能解決我的問題! –
您不會顯示設置字典的詳細信息。你確定字典在兩次調用之間已經正確更新嗎?在進行POST之前,「NSLog」字典? – emrys57
第二個想法:你顯示的完成塊有「成功」,這意味着登錄是好的,「失敗」意味着登錄失敗。但是,這當然不是成功和失敗的意義。 「成功」只是從服務器獲得明智的答覆。例如,「失敗」將是DNS查找失敗或超時。 ???? – emrys57