gpt4 book ai didi

ios - 从 AFHTTPSessionManager 获取数据

转载 作者:行者123 更新时间:2023-11-29 12:03:37 28 4
gpt4 key购买 nike

由于我是 IOS 的新手,AFNetworking 3,0 是新的,所以我不知道如何从 AFHTTPSessionManager 中检索数据。我必须关注消息,我想返回结果

- (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: 方法是一个异步方法。

您要做的是从调用它的方法中返回一个字符串。这将不起作用,因为该方法将在下载开始之前完成。

你需要用像这样的完成 block 来调用它......

- (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");
}

此代码中日志的顺序将是...

  1. 方法开始
  2. 方法完成
  3. 正在下载
  4. 下载成功

如您所见,尝试在方法结束时返回是行不通的,因为下载尚未完成。

关于ios - 从 AFHTTPSessionManager 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867084/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com