从 AFHTTPSessionManager 获取数据
Get Data from AFHTTPSessionManager
由于我是 IOS 的新手并且 AFNetworking 3,0 是新的,所以我不知道如何从 AFHTTPSessionManager 检索数据。
我必须关注消息,我想要 return 结果
- (NSString *) makeServiceCall;
{
NSString *response = @"";
@try {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager
POST:self.url.absoluteString
parameters:self.parameters
progress:nil
success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Success: %@", responseObject);}
failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"Error: %@", error);
}];
[AFHTTPSessionManager manager].securityPolicy.allowInvalidCertificates = YES;
}
@catch (NSException *exception) {
NSLog(@"%@", exception.reason);
}
}
方法AFHTTPSessionManager POST:parameters:progress:success:failure:
是一个异步方法。
您要做的是 return 来自调用它的方法的字符串。这将不起作用,因为该方法将在下载开始之前完成。
您需要使用类似这样的完成块来调用它...
- (void)getStringWithCompletionHandler:(void (^)(id))completion {
NSLog(@"Method started");
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager
POST:self.url.absoluteString
parameters:self.parameters
progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"Download underway");
}
success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Download successful");
completion(responseObject);
}
failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"Error");
}];
// trying to return a string here won't work because the download hasn't finished yet.
// You can see the order of things happening by adding logs...
NSLog(@"Method finished");
}
此代码中日志的顺序将为...
- 方法开始
- 方法完成
- 正在下载
- 下载成功
如您所见,在方法结束时尝试 return 是行不通的,因为下载尚未完成。
由于我是 IOS 的新手并且 AFNetworking 3,0 是新的,所以我不知道如何从 AFHTTPSessionManager 检索数据。 我必须关注消息,我想要 return 结果
- (NSString *) makeServiceCall;
{
NSString *response = @"";
@try {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager
POST:self.url.absoluteString
parameters:self.parameters
progress:nil
success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Success: %@", responseObject);}
failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"Error: %@", error);
}];
[AFHTTPSessionManager manager].securityPolicy.allowInvalidCertificates = YES;
}
@catch (NSException *exception) {
NSLog(@"%@", exception.reason);
}
}
方法AFHTTPSessionManager POST:parameters:progress:success:failure:
是一个异步方法。
您要做的是 return 来自调用它的方法的字符串。这将不起作用,因为该方法将在下载开始之前完成。
您需要使用类似这样的完成块来调用它...
- (void)getStringWithCompletionHandler:(void (^)(id))completion {
NSLog(@"Method started");
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager
POST:self.url.absoluteString
parameters:self.parameters
progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"Download underway");
}
success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Download successful");
completion(responseObject);
}
failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"Error");
}];
// trying to return a string here won't work because the download hasn't finished yet.
// You can see the order of things happening by adding logs...
NSLog(@"Method finished");
}
此代码中日志的顺序将为...
- 方法开始
- 方法完成
- 正在下载
- 下载成功
如您所见,在方法结束时尝试 return 是行不通的,因为下载尚未完成。