我正在使用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}}。
答案 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)
创建自定义网络图层类以与服务器交互,您可以在其中自定义处理任何请求结果/错误。然后在视图控制器中使用此类。
在这种情况下,您可以在一个地方更改代码,并确保所有应用程序的所有内容都会更改,您使用此网络图层类