Ich habe meine Netzwerkfunktionalität von AFNetworking
zu AFNetworking v2
migriert und anstelle von AFHttpClient
verwende ich AFHTTPRequestOperationManager
, um auch iOS6 zu unterstützen.AFNetworking 2: Wie man eine AFHTTPRequestOperationManager Anfrage abbricht?
Mein Problem ist, dass, während in AFHttpClient
dort die Funktionalität war eine ausstehende Anforderung abzubrechen die Methode
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path;
Verwendung in den AFHTTPRequestOperationManager
es nicht so offensichtlich Methode.
Was habe ich jetzt getan bis zu ist Subklassen AFHTTPRequestOperationManager
und erklärt eine iVar
AFHTTPRequestOperation *_currentRequest;
Wenn ich einen Antrag machen, ist der Code so etwas wie
- (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);
}];
}
und ich habe eine
- (void)cancelCurrentRequest;
Methoden, die das alles tut, ist
Jetzt- (void)cancelCurrentRequest
{
if(_currentRequest) {
[_currentRequest cancel]; _currentRequest = nil;
}
}
, ich glaube nicht, die gute Praxis ist, und wenn die Methode aufgerufen wird, bekomme ich (NSURLErrorDomain error -999.)
, weshalb ich einen Rat brauche auf immer dies richtig gemacht.
Vielen Dank im Voraus.
Thx für die Antwort. Ich habe das bemerkt, aber was ist, wenn Sie eine bestimmte GET/POST-Anfrage abbrechen wollen? – ozzotto
Wenn Sie sich die Implementierung von cancelAllHTTPOperationsWithMethod: path ansehen, finden Sie, wie Sie es tun. Es werden nur alle Operationen in operationQueue wiederholt, um diejenigen zu finden, die der Methode und dem Pfad entsprechen, und sie abzubrechen. Der Grund, warum sie sie in V2 entfernen, denke ich, dass sie denken, dass es nicht notwendig ist, eine bestimmte Operation abzubrechen? –
Das habe ich getan. Eine Implementierung von cancelAllHTTPOperationsWithMethod: Pfad in meiner AFHTTPRequestOperationManager-Unterklasse. Danke Kumpel. – ozzotto