zoukankan      html  css  js  c++  java
  • 网络通信

    URL请求一般分为同步和异步两种,请求是需要耗时的,所以肯定不能放在主线程中进行,这样会阻塞UI,这两种请求方式都可以在其他线程使用

    1、同步方式

    通过GCD来放到其他线程中执行

    dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(dispatchQueue, ^(void) {
      NSURL *url = [NSURL URLWithString:urlAsString];
      NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; NSURLResponse *response = nil;
      NSError *error = nil;
      NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
      if ([data length] > 0 && error == nil) {
         //处理data
      } else if ([data length] == 0 && error == nil) {
          //数据为空
      } else if (error != nil) {
          //请求出错
      } 
    });

    2、异步方式

    通过方法

    NSURLConnection的方法

    + (void)sendAsynchronousRequest:(NSURLRequest *)request
                              queue:(NSOperationQueue *)queue
                  completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler
        NSURL *url = [NSURL URLWithString:urlString];
    
        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5];
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
            if ([data length] >0 && error == nil) {
                [self saveData:data];
            } else if ([data length] == 0 && error == nil) {
                //获取数据为空,报错
            } else if (error != nil) {
                NSLog(@"Error happened : %@",error.localizedDescription);
            }
    }];
     
  • 相关阅读:
    vue element-ui 动态上传
    vue element ui 导航刷新 is-active
    算法图解笔记
    简单操作的一些小技巧
    大话数据结构 -07-1 图的定义、抽象数据类型与存储结构
    ELO kernels 记录
    [2] day 02
    [1] first day
    大话数据结构 -04-3 队列
    大话数据结构 -04-2 栈的应用-递归
  • 原文地址:https://www.cnblogs.com/mystory/p/2837459.html
Copyright © 2011-2022 走看看