を使用して API と通信する iOS アプリを作成しようとしていますAFHTTPClient
。最初のステップは、ユーザーを認証することです。そのために、次のコードを使用します。
-(void)authorize
{
NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"login.php" parameters:@{@"login": account.username, @"passwd":account.password}];
AFHTTPRequestOperation *operation = [httpClient HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
[httpClient setDefaultHeader:@"Token" value:[[operation.response allHeaderFields] objectForKey:@"CSRF-Token"]];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error.localizedDescription);
}];
[httpClient enqueueHTTPRequestOperation:operation];
[httpClient.operationQueue waitUntilAllOperationsAreFinished];
}
ご覧のとおり、私のコードはサーバーの応答からトークンを取得し、それを今後のすべての要求のデフォルト ヘッダーとして設定します。
次に、を使用して他のリクエストに進みます- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:success failure:failure
しかし、デバッガーを使用すると、承認操作が完了する前に他の要求が実行されたため、認証トークンがないために失敗したことがわかりました。追加しまし[httpClient.operationQueue waitUntilAllOperationsAreFinished];
たが、うまくいかないようです...
ご協力ありがとうございました