如何在AFNetworking的AFHTTPSessionManager中超时或检测慢响应?

 mobiledu2502875577 发布于 2023-01-07 19:41

使用下面的代码,如果没有互联网连接,则会立即触发故障块 - 这很好.但如果有连接但没有互联网怎么办?

我已经读过这个问题:如何使用AFNetworking设置超时,建议使用reachabilityManager,本答案中的示例显示了使用 - 当设备离线时,AFNetworking 2.0队列请求与setReachabilityStatusChangeBlock无关.

但是,如果我的模拟器或手机连接到我的wifi网络但没有互联网访问(DNS,DHCP或调制解调器问题),我的代码目前仍在尝试长时间访问我的API.我没有下载任何东西,我知道我的脚本和我的服务器应该在几秒钟内响应所以我知道在5秒不活动后,出了点问题.

那么我可以安全地执行超时,或者我可以在当前脚本中使用reachabilityManager来检测脚本(而不是Internet)是否无法访问,如果是,如何执行?

- (void)APICall:(NSMutableDictionary*)params {

    NSURL *baseURL = [NSURL URLWithString:BaseURLString];
    NSDictionary *parametersGetAuthCode = @{@"req": @"getauth"};

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];

    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager POST:APIscript parameters:parametersGetAuthCode success:^(NSURLSessionDataTask *task, id responseObject) {
        if ([task.response isKindOfClass:[NSHTTPURLResponse class]]) {
            NSHTTPURLResponse *r = (NSHTTPURLResponse *)task.response;
            if ([r statusCode] == 200) {

            //do success stuff

            }
        }
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alertView show];

        //do failure stuff

    }];

}

race_carr.. 20

只需确定您的应用程序的合理超时间隔,并将其设置在AFHTTPSessionManager请求序列化程序上.

[manager.requestSerializer setTimeoutInterval:20.0];  

在UI中添加内容,例如UIActivityIndi​​catorView或"Downloading ..."消息,以便用户知道发生了什么.

1 个回答
  • 只需确定您的应用程序的合理超时间隔,并将其设置在AFHTTPSessionManager请求序列化程序上.

    [manager.requestSerializer setTimeoutInterval:20.0];  
    

    在UI中添加内容,例如UIActivityIndi​​catorView或"Downloading ..."消息,以便用户知道发生了什么.

    2023-01-07 19:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有