我如何知道AFNetworking中是否执行了成功或失败块

时间:2015-03-30 09:09:02

标签: ios objective-c afnetworking

我正在使用AFNetworking。我创建了一个名为MyRequest的类,它扩展了NSObject。我创建了一个名为requestForPost的方法

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": variable1};
[manager POST:@"http://app.com/resources" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);

}];

当我要打电话给webservice时,我将参数字典传递给上面的方法,这样它就会执行webservice

我想知道webservice请求是成功还是失败。我应该如何将结果传回给我调用上述ViewController的{​​{1}}。

2 个答案:

答案 0 :(得分:2)

使用与AFNetworking相同的方法:使用块。一个是成功,一个是失败。在UIViewController中使用这种方式,您将知道您的请求是成功还是失败,并且返回了对象。

在您的API文件中:

- (void)yourAPIMethodWithSuccess:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @{@"foo": variable1};
    [manager POST:@"http://app.com/resources" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
        success(responseObject);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
        failure(error);
    }];
}

在您的控制器中:

- (void)fetchDataForRequest{
    YourAPIInstance yourAPIMethodWithSuccess:^(id expectedObject) {
        NSLog(@"Success: %@", expectedObject);
    } failure:^(NSError *error) {
        NSLog(@"Request failed: %@", [error localizedDescription]);
    }];
}

答案 1 :(得分:0)

创建自定义网络图层类以与服务器交互,您可以在其中自定义处理任何请求结果/错误。然后在视图控制器中使用此类。

在这种情况下,您可以在一个地方更改代码,并确保所有应用程序的所有内容都会更改,您使用此网络图层类