美文网首页
发送同步网络请求

发送同步网络请求

作者: 滴滴时光 | 来源:发表于2017-07-31 17:40 被阅读35次
NSTimeInterval threadBlockInterval = 10.0;

dispatch_group_t group = dispatch_group_create();

for (int i = 0; i < 3; ++i) {
    // enter 和 leave 必须成对出现
    dispatch_group_enter(group);
    
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"http://www.jianshu.com"]
                                    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                        
                                        // handle response
                                        
                                        // 注意:
                                        // 当前的线程和调用线程不是一个线程,更不能返回调用线程做操作,会死锁的。
                                        
                                        // 因为,AFNetworking completionBlock 是返回 main thread 调用的,
                                        // 所以,如果调用线程就是 main thread 的话是不能使用 AFNetworking 的
                                        
                                        dispatch_group_leave(group);
                                    }];
    [task resume];
}

dispatch_group_wait(group, dispatch_time(DISPATCH_TIME_NOW, threadBlockInterval * NSEC_PER_SEC));

注意:

  1. 如果想在 main thread 发送同步请求,不能使用 AFNetworking
  2. 如果网络做了缓存的话,也就是 completionHandler 可能会调用 >=2 次,在 dispatch_group_leave 那里需要做判断,enterleave 调用次数 必须 保持一致

相关文章

  • iOS网络NSURLConnection和NSURLSessio

    HTTP通信过程 NSURLConnection发送网络请求 block 方式 发送同步请求发送同步请求 发送异步...

  • 发送同步网络请求

    注意: 如果想在 main thread 发送同步请求,不能使用 AFNetworking 如果网络做了缓存的话,...

  • NSURLConnection和NSURLSession的区别

    1.NSURLConnection的常用方法 发送网络请求的三种方法:这几个api现在都被废弃了 发送同步请求 s...

  • 网络请求NSURLConnection笔记

    发送异步请求 -(void)async{ } 发送同步请求 -(void)sync{ } NSURLConnect...

  • iOS-同异步GET请求和POST请求

    四种请求理解 同步请求可以从网络上请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进...

  • iOS - NSURLConnection&&N

    一、NSURLConnection iOS7之后不建议使用 GET请求发送同步请求 发送异步请求 POST请求: ...

  • 网络协议

    网络请求分为4类:GET同步请求GET异步请求POST同步请求POST异步请求 同步网络请求步骤: 1:创建网址字...

  • iOS网络请求

    一、NSURLConnection NSURLConnection常见的发送请求方法有以下几种 同步请求 异步请求...

  • NSURLSession发送同步请求

    在iOS9之前我们可以通过 [NSURLConnection sendSynchronousRequest:...

  • 1.1 网络请求-同步请求

    网络请求-同步请求 NSString方式 NSData方式 NSURLConnection方式 1同步请求 NSS...

网友评论

      本文标题:发送同步网络请求

      本文链接:https://www.haomeiwen.com/subject/phprlxtx.html