我有子类的AFHTTPClient
主要思想是我通过我的AFHTTPClient
子类单例调用所有 API,并且所有请求都通过 1 分进行错误处理和 HUD 显示。这是每个 API 调用的入口点:
-(void) makeRequestWithPath:(NSString*) path andParams:(NSDictionary*) params
success:(void (^)( id JSON, AFHTTPRequestOperation *operation)) success
failure:(void (^)( NSError *error)) failure
我有很多 API 调用方法,例如:
-(void) getListMainTreeWithSuccess:(void (^)( id JSON, AFHTTPRequestOperation *operation)) success
failure:(void (^)( NSError *error)) failure
{
[self makeRequestWithPath:@"objects/selectlist" andParams:nil success:^(id JSON, AFHTTPRequestOperation *operation) {
success(JSON,operation);
} failure:^(NSError *error) {
failure(error);
}];
}
这对我的需要很好。但是我遇到的问题是我需要通过我的AFHTTPClient
子类循环发出串行请求并在所有这些都完成后采取一些行动,我找到了方法
-(void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests
progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock
completionBlock:(void (^)(NSArray *operations))completionBlock
这应该可以解决我的问题,但问题是我通过调用所有方法AFHTTPClient
,它的方法 getPath: 和 postPath: 和以前的方法迫使我重写所有内容并使我的子类完全无用,因为我需要在那里添加NSArray
of AFHTTPRequestoperation
,这不是可以从我的子类和方法中构造或提取。以前我尝试使用 __block 将请求与信号量和其他东西同步,但我没有得到我需要的东西,请帮助我!
更新:
似乎甚至无法使用enqueueBatchOfHTTPRequestOperations
方法(即使重写我的所有代码),因为此方法需要 http 请求操作数组,但不可能用它们构造 POST 请求。