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 リクエストで同じです。省略記号はプライバシーのためのものであり、セマンティックな意味を持つ文字列のプレースホルダーです。