我將我的網絡功能從AFNetworking
遷移到AFNetworking v2
,而不是AFHttpClient
我使用AFHTTPRequestOperationManager
來支持iOS6。AFNetworking 2:如何取消AFHTTPRequestOperationManager請求?
我的問題是,雖然在AFHttpClient
有功能使用
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path;
方法,在AFHTTPRequestOperationManager
沒有這樣明顯的方法取消掛起的請求。
我所做的到現在是繼承AFHTTPRequestOperationManager
並宣佈伊娃
AFHTTPRequestOperation *_currentRequest;
當我提出請求的代碼是一樣的東西
- (void)GetSomething:(NSInteger)ID success:(void (^)(MyResponse *))success failure:(void (^)(NSError *))failure
{
_currentRequest = [self GET:@"api/something" parameters:@{@"ID": [NSNumber numberWithInteger:ID]} success:^(AFHTTPRequestOperation *operation, id responseObject) {
MyResponse *response = [MyResponse responseFromDictionary:responseObject];
success(response);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(error);
}];
}
,我有一個
- (void)cancelCurrentRequest;
所有的方法是
- (void)cancelCurrentRequest
{
if(_currentRequest) {
[_currentRequest cancel]; _currentRequest = nil;
}
}
現在,我不認爲這是很好的做法,當調用方法時,我得到(NSURLErrorDomain error -999.)
這就是爲什麼我需要得到這個正確做了一些建議。
預先感謝您。
Thx的答案。我注意到了,但是如果你想取消一個特定的GET/POST請求呢? – ozzotto
如果你看看cancelAllHTTPOperationsWithMethod:路徑的實現,你會發現如何去做。它只是迭代operationQueue中的所有操作以找到與方法和路徑匹配並取消它們的操作。他們在v2中刪除它們的原因我猜他們認爲沒有必要取消特定的操作? –
這就是我最終做的。在我的AFHTTPRequestOperationManager子類中實現cancelAllHTTPOperationsWithMethod:路徑。 Thx隊友。 – ozzotto