NSURLRequest 同步和异步

原创 2012年03月26日 18:06:38

同步下载:

-(void)downloadSynJarFiles

{

    NSString *urlAsString = @"http://192.168.1.196:8080/PlaceNaviServer/WEB-INF/lib/activation.jar";---要下载的全路径名

    NSURL *url = [NSURL URLWithString:urlAsString];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    NSError *error = nil;

    

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

    /*下载的数据*/

    if (data!=nil) {

        NSLog(@"下载成功");

        if ([data writeToFile:@"/Users/sunningning/Desktop/activation.jar" atomically:YES]) {--下载到目的路径名

            NSLog(@"保存成功!");

        }

        else

        {

            NSLog(@"保存失败!");

        }

    }

    else{

        NSLog(@"%@",error);

    }

}



异步下载:

//异步

-(void)downloadAsnJarFiles

{

    NSString *urlAsString = @"http://192.168.1.196:8080/PlaceNaviServer/WEB-INF/lib/activation.jar";

    NSURL *url = [NSURL URLWithString:urlAsString];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    NSMutableData *data = [[NSMutableData alloc]init];

    self.connectionData = data;

    [data release];

    NSURLConnection *newConnection = [[NSURLConnection alloc]

                                      initWithRequest:request delegate:self

                                      startImmediately:YES];

    self.connection = newConnection;

    [newConnection release];

    if (connection !=nil) {

        NSLog(@"Successfully create the connection");

    }

    else{

        NSLog(@"can not create the connection!");

    }

    

}


-(void)connection:(NSURLConnection *)connection 

    didFailWithError:(NSError *)error

{

    NSLog(@"an error happened!");

    NSLog(@"%@",error);

}


-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

    NSLog(@"receive data");


    [self.connectionData  appendData:data];--这里才真正意义的取值和赋值

}


-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    NSLog(@"haha----");

    /*下载数据*/

    if ([self.connectionData writeToFile:@"/Users/sunningning/Desktop/activation.jar" atomically:YES]) {--保存到目的路径

        NSLog(@"保存成功!");

    }

    else

    {

        NSLog(@"保存失败!");

    }

    

    /*处理data*/

}


-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    [self.connectionData setLength:0];

}


- (void)viewDidUnload

{

    [super viewDidUnload];

    // Release any retained subviews of the main view.

    // e.g. self.myOutlet = nil;

    [self.connection cancel];//取消连接

    self.connectionData = nil;//属性

    self.connection = nil;//属性

}




相关文章推荐

同步异步阻塞非阻塞

  • 2015年04月29日 10:12
  • 380KB
  • 下载

程序同步与异步的区别

  • 2016年11月27日 10:42
  • 237KB
  • 下载

Linux高性能服务器编程读书-半同步半异步模式

写代码写的多了以后发信啊很多事情都是套路,或者定式,前人总结的经验很牛逼. 城市套路深,赶紧回农村,农村路也滑,人心更复杂. 对于像服务器这种既要求较好的实时性,又要求能同时处理多个客户端请求的程...

JAVA IO同步,异步

  • 2014年08月26日 13:48
  • 264KB
  • 下载

同步异步复位与亚稳态

  • 2014年04月26日 01:03
  • 196KB
  • 下载

Java线程的同步和异步的区别

1.       多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有...

同步异步阻塞非阻塞I/O思维导图

  • 2012年11月05日 21:34
  • 355KB
  • 下载

分布式缓存系统Memcached(七)——半同步/半异步模式

在前面工作线程初始化的分析中讲到Memcached采用典型的Master_Worker模式,也即半同步/半异步的高效网络并发模式。其中主线程(异步线程)负责接收客户端连接,然后分发给工作线程,具体由工...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSURLRequest 同步和异步
举报原因:
原因补充:

(最多只允许输入30个字)