zoukankan      html  css  js  c++  java
  • AFNetWorking同步请求

        dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); //创建信号量
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        manager.requestSerializer.timeoutInterval = 5;
        manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        //如果之前请求有值,则异步就好,不然会卡主线程
        if([OverallModel shareOverallModel].nSystemParameter){
            dispatch_semaphore_signal(semaphore);
        }
        [manager GET:[AppURLRequest getSystemVekey] parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary *responseObject) {
            
             dispatch_semaphore_signal(semaphore);//不管请求状态是什么,都得发送信号,否则会一直卡着进程
             NSInteger result = [[NSString stringWithFormat:@"%@",[responseObject objectForKey:@"result"]]integerValue];
            if(result == 1){
                NSString *nSystemParameter = NSZL(responseObject[@"data"][@"nSystemParameter"]);
                NSString *QQInfo = NSZL(responseObject[@"data"][@"QQInfo"]);
                [OverallModel shareOverallModel].nSystemParameter = nSystemParameter;
                [OverallModel shareOverallModel].QQInfo = QQInfo;
            }
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            dispatch_semaphore_signal(semaphore);//不管请求状态是什么,都得发送信号,否则会一直卡着进程
        }];
        
        dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);  //等待
    

     如果是在异步线程请求,则去掉 manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

  • 相关阅读:
    win下发现两个有用的快捷键
    java.sql.SQLException: Access denied for user 'somebody'@'localhost' (using password: YES)
    记一次面试经历(互联网金融行业)
    FindBugs规则整理
    (转)定制findbugs规则
    Docker学习(一)
    HDU3368+枚举
    计算几何题目汇总(转)
    POJ2225+BFS
    POJ2209+水题!
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/10755303.html
Copyright © 2011-2022 走看看