精华内容
下载资源
问答
  • 同步下载和异步下载

    千次阅读 2013-12-26 15:32:50
    同步下载模型 由上图可知:同步下载需要三步 1 由手机客户端向服务器端发起请求,服务器端接受请求,并且剖析http参数 2 服务器端把数据发送给客户端,客户端一直阻塞等待返回数据 3 数据接收完成 同步下载...

    什么时候需要自定义view

    1 需要特殊的图形

    2 需要控制触摸事件的时候

    同步下载模型


    由上图可知:同步下载需要三步

    1 由手机客户端向服务器端发起请求,服务器端接受请求,并且剖析http参数

    2 服务器端把数据发送给客户端,客户端一直阻塞等待返回数据

    3 数据接收完成

    同步下载的缺点

    交互不好,容易卡死,一般下载数据较小或者由特定的需求

    //同步请求

        

        /*//第一步 创建一个URL

        //NSURL把字符串转化成一个URL(网络资源地址)

        NSURL *pUrl = [NSURL URLWithString:URL];

        //第二个 创建一个请求

        //创建一个请求(根据网络资源地址) 用来给服务器端 发送请求 NSURLRequestUseProtocolCachePolicy缓存机制

        //timeoutInterval反应的事件的最大时间

        NSURLRequest *pRequest = [[NSURLRequest alloc]initWithURL:pUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

        //第三步 建立连接

        //根据发送同步请求的时候 需要的两个参数(发起之后 线程就会一直等待服务器响应 知道超出最大的时间)

        NSURLResponse *pResponse = nil;

        NSError *pError = nil;

        NSData *pData = [NSURLConnection sendSynchronousRequest:pRequest returningResponse:&pResponse error:&pError];

        NSLog(@"pData = %@",pData);

        NSLog(@"pError = %@",[pError localizedDescription]);

        */

    异步下载模型


    忽然同步下载的区别是异步下载发送请求后不会等待接收完数据

    异步下载也有三步

    1 客户端向服务器发送请求 服务器接收请求并剖析http参数

    2 应用程序再后台下载数据 在这个过程不会阻塞客户端运行(可以认为是打开一个下载工具 就不用管了 下载失败或者成功会有回调)

    3 数据接收完成

    /*异步请求*/

        //1.获取网络资源路径(URL)

        NSURL *pURL1 = [NSURL URLWithString:URL];

        //2.根据URL创建请求

        NSURLRequest *pRequset1 = [NSURLRequest requestWithURL:pURL1 cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

        //3.(与同步请求的区别点)发起请求,通过委托模式回调完成数据获取

        [NSURLConnection connectionWithRequest:pRequset1 delegate:self];

        

        [self.window makeKeyAndVisible];

        return YES;

    }

    #pragma mark  URLConnectionDataDelegate

    //1.服务器响应回调的方法

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

    {

        NSLog(@"服务器响应");

        self.pData = [NSMutableData dataWithCapacity:5000];

    }

    //2.服务返回数据,客户端开始接受(data为返回的数据)

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

    {

        NSLog(@"服务器返回数据");

        //将返回数据放入缓存区

        [self.pData appendData:data];

    }

    //3.数据接受完毕回调的方法

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection

    {

        NSLog(@"数据接受完毕");

        NSLog(@"pData = %@",self.pData);

    }

    //4.接受数据失败时候调用的方法

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

    {

        NSLog(@"数据接受失败,失败原因:%@",[error localizedDescription]);

    }




    展开全文
  • 一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。 发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。  步骤: 1.创建NSURL  ...

    一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。  发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。

      步骤:

    1.创建NSURL

       NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com/"];

     

    2.通过URL创建NSURLRequest

        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 

     

        cachePolicy 缓存协议是个枚举类型:

     NSURLRequestUseProtocolCachePolicy 基础策略

    NSURLRequestReloadIgnoringLocalCacheData 忽略本地缓存

     NSURLRequestReturnCacheDataElseLoad 首先使用缓存,如果没有本地缓存,才从原地址下载

    NSURLRequestReturnCacheDataDontLoad 使用本地缓存,从不下载,如果本地没有缓存,则请求失败。此策略多用于离线操作

    NSURLRequestReloadIgnoringLocalAndRemoteCacheData 无视任何的缓存策略,无论是本地还是远程,总是从原地址重新下载

    NSURLRequestReloadRevalidatingCacheData 如果本地缓存是有效的则不下载。其他任何情况都从原地址重新下载

     

     

    3.建立网络连接NSURLConnection,同步请求数据 

       NSData *receivedData = (NSMutableData *)[NSURLConnection sendSynchronousRwquest:request returningResponse:&response error:&error];

     

     以上三步后,就需要将receivedData进行解析,一般是XML/JSON。 

     

    二、异步下载

     

    异步下载支持应用程序在后台下载数据,在等待下载完成的过程中不会阻塞代码的运行,异步连接模型图如下:iOS开发异步下载

    对比上篇的同步下载会发现,异步下载发起请求后不会等待接收完成数据,从图中可以看到,异步下载也有三个步骤:

    1、客户端向服务器发起请求、服务器端接收请求并解析http参数.

    2、应用程序在后台下载数据,在这个过程中不会阻塞客户端运行(可以认为,打开一个下载工具,就不用管了,下载失败或下载完成,会有回调)

    3、数据接收完成,如NSURLConnection的异步下载

    iOS开发异步下载

    NSURLConnection同步和异步唯一的不同就是NSURLConnection对象的创建方式、在initWithRequest: degate指定其代理方法时就开始下载,其代理方法能获取整个下载过程,常用的代理方法有:

    1、接收完HTTP协议头,开始真正接手数据时候调用,一般在这个方法里初始化一些存储数据的对象如NSMutableData;

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

    2、每接收一段数据就会调用此函数,一般在这把data加到NSMutableData对象上

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

    3、接收数据失败时调用,并且中断下载

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 

    4、最后,如果连接成功并下载,会调用,一般在这释放一些alloc创建的内存

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection;

    展开全文
  • 一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。 发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。  步骤: 1.创建NSURL  ...

    一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。  发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。

      步骤:

    1.创建NSURL

       NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com/"];

    2.通过URL创建NSURLRequest

        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 

        cachePolicy 缓存协议是个枚举类型:

     NSURLRequestUseProtocolCachePolicy 基础策略

     NSURLRequestReloadIgnoringLocalCacheData 忽略本地缓存

     NSURLRequestReturnCacheDataElseLoad 首先使用缓存,如果没有本地缓存,才从原地址下载

     NSURLRequestReturnCacheDataDontLoad 使用本地缓存,从不下载,如果本地没有缓存,则请求失败。此策略多用于离线操作

     NSURLRequestReloadIgnoringLocalAndRemoteCacheData 无视任何的缓存策略,无论是本地还是远程,总是从原地址重新下载

     NSURLRequestReloadRevalidatingCacheData 如果本地缓存是有效的则不下载。其他任何情况都从原地址重新下载

      3.建立网络连接NSURLConnection,同步请求数据 

       NSData *receivedData = (NSMutableData *)[NSURLConnection sendSynchronousRwquest:request returningResponse:&response error:&error];

     以上三步后,就需要将receivedData进行解析,一般是XML/JSON。 

     

    二、异步下载 

        步骤: 

    步骤前两步和同步一样,在第三步接收数据的时候与它有差别,需要用四个网络连接代理方法来实现。

            1.创建NSURL

       NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com/"];

      2.通过URL创建NSURLRequest

        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 

    3. 建立网络连接NSURLConnection,并设置其代理

    [NSURLConnection connetionWithRequest:request delegate:self];

    需要实现的代理:

    NSURLConnectionDataDelegate,NSURLConnectionDelegate

      用到的4个代理方法:

    //接收服务器回应时这个方法被调用 

    - (void)connetion:(NSURLConnetion *)connection didReceiveResponse:(NSURLResponse *)response 

    {  

    //初始化receiveData,用于存放服务器给的数据 

    self.receivedData = [NSMutableData data]; 

    //接收到服务器传输数据的时候调用,此方法根据数据大小会执行若干次

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

    {

    [self.receivedData appendData:data]; 

     }

    //数据传完之后调用此方法

    - (void)connetionDidFinishLoading:(NSURLConneciton *)connetion 

    {

    //TODO 得到最终的receivedData 

     } 
      //网络请求过程中,出现任何错误,如断网,连接超时等,会进入此方法

      - (void)connetion:(NSURLConnection *)connetion didFailWithError:(NSError *)error

      {

    NSLog(@"%d@", [error localizedDescription]); 

    展开全文
  • Get请求将参数直接写再访问...Post请求将参数路径分开 操作相对复杂 但是将数据保存在body里边 不容易被看到 001 1、  同步GET请求 002   003

    Get请求将参数直接写再访问的路径上,操作简单但是安全性不高 容易被外人看到 对地址字节数有要求 地址字节最多是255个

    Post请求将参数和路径分开 操作相对复杂 但是将数据保存在body里边 不容易被看到

    001 1、     同步GET请求
    002  
    003     //第一步,创建URL
    004  
    005     NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
    006  
    007      
    008  
    009     //第二步,通过URL创建网络请求
    010  
    011     NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    012  
    013     //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
    014  
    015       其中缓存协议是个枚举类型包含:
    016  
    017       NSURLRequestUseProtocolCachePolicy(基础策略)
    018  
    019       NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
    020  
    021       NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)
    022  
    023       NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
    024  
    025       NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
    026  
    027       NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
    028  
    029     //第三步,连接服务器
    030  
    031     NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    032  
    033      
    034  
    035     NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
    036  
    037      
    038  
    039     NSLog(@"%@",str);
    040  
    041 2、同步POST请求
    042  
    043     //第一步,创建URL
    044  
    045     NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];
    046  
    047     //第二步,创建请求
    048  
    049     NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    050  
    051     [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
    052  
    053     NSString *str = @"type=focus-c";//设置参数
    054  
    055     NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    056  
    057     [request setHTTPBody:data];
    058  
    059     //第三步,连接服务器
    060  
    061      
    062  
    063     NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    064  
    065      
    066  
    067     NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
    068  
    069      
    070  
    071     NSLog(@"%@",str1);
    072 3、异步GET请求
    073  
    074     //第一步,创建url
    075  
    076     NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
    077  
    078     //第二步,创建请求
    079  
    080     NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    081  
    082     //第三步,连接服务器
    083  
    084     NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    085 4、异步POST请求
    086  
    087     //第一步,创建url
    088  
    089     NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];
    090  
    091     //第二步,创建请求
    092  
    093     NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    094  
    095     [request setHTTPMethod:@"POST"];
    096  
    097     NSString *str = @"type=focus-c";
    098  
    099     NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    100  
    101     [request setHTTPBody:data];
    102  
    103     //第三步,连接服务器
    104  
    105     NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    106  
    107 5、异步请求的代理方法
    108  
    109 //接收到服务器回应的时候调用此方法
    110  
    111 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    112  
    113 {
    114  
    115     NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
    116  
    117     NSLog(@"%@",[res allHeaderFields]);
    118  
    119     self.receiveData = [NSMutableData data];
    120  
    121    
    122  
    123                                
    124  
    125 }
    126  
    127 //接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次
    128  
    129 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    130  
    131 {
    132  
    133     [self.receiveData appendData:data];
    134  
    135 }
    136  
    137 //数据传完之后调用此方法
    138  
    139 -(void)connectionDidFinishLoading:(NSURLConnection *)connection
    140  
    141 {
    142  
    143     NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];
    144  
    145     NSLog(@"%@",receiveStr);
    146  
    147 }
    148  
    149 //网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法
    150  
    151 -(void)connection:(NSURLConnection *)connection
    152  
    153  didFailWithError:(NSError *)error
    154  
    155 {
    156  
    157     NSLog(@"%@",[error localizedDescription]);


    展开全文
  • IOS的同步下载异步下载

    千次阅读 2013-08-12 15:22:32
    先介绍IOS自带的两种下载方式:同步下载和异步下载。 同步下载的时候,该线程进入挂起、假死状态,等到全部下载完成,才能进行其他操作。在这期间,用户对界面的操作都是无效的,界面也不会响应任何事件。 另外一种...
  • 主要为大家详细介绍了C#下载歌词文件的同步和异步方法,感兴趣的小伙伴们可以参考一下
  • ios 同步和异步下载

    2013-11-07 12:08:07
    // .h文件 #import @interface ViewController : UIViewControllerNSURLConnectionDelegate> -(NSData*) loadPictureSync:(NSString*)url; //同步 -(void)loadPicktureAsync:(NSString*)url; /
  • ios 同步和异步下载图片

    千次阅读 2013-09-17 20:57:48
    //同步下载 -(NSData *)synchronousDownLoadFromUrl:(NSString *)url {   NSURL *netUrl = [[NSURL alloc]initWithString:url];   NSURLRequest *request = [[NSURLRequest alloc]initWithURL:netUrl];
  • okhttp 同步请求和异步请求

    万次阅读 2017-03-31 22:14:52
    下面就同步和异步两种方式进行介绍。 1.1、同步方式 发送请求后,就会进入阻塞状态,知道收到响应。下面看一个下载百度首页的例子: OkHttpClient client = new OkHttpClient.Builder().readTimeout(5, ...
  • 关于同步加载和异步加载

    千次阅读 2018-01-30 17:16:08
    那如果是非常耗时的处理,例如下载、处理图片、大计算等,那么肯定需要异步加载,加载完成后同步显示到列表中; 2.java中有同步的概念,Android中目前没有同步加载数据这种做法,Android中一般都是异步加载,操作...
  • 用于请求头中,指定第一个字节的位置最后一个字节的位置,一般格式: Range:(unit=first byte pos)-[last byte pos] Range 头部的格式有以下几种情况: Range: bytes=0-499 表示第 0-499 字节范围的内容 Range: ...
  • 同步异步下载

    2014-08-04 20:43:17
    1、同步连接和异步连接 同步连接是iOS中网络连接的一种方式,当请求的数据量小时,同步连接是一个很好的选择。UI“冻结”是它的一个缺点。 同步连接步骤: //新建一个URL    NSURL *url =[NSURLURLWithString...
  • 第二种是异步请求:优化了同步请求,没有卡顿现象,而且提高了效率。 1.同步请求的步骤: 1)创建URL。 2)封装请求 3)发起连接请求,接收数据 //同步请求 //1 创建 url NSURL *url = [NSURL URLWithString...
  • 使用C#下载一个Internet上的文件主要是依靠HttpWebRequest/HttpWebResonse和WebClient。具体处理起来还有同步和异步两种方式,所以我们其实有四种组合
  • 在XMLHttpRequest2里支持二进制数据的下载了,现分别以同步和异步两种方式分别介绍。 异步的方式下载: xmlRequest.open("GET", "0.jpg", true); xmlRequest.responseType = "blob";//这里是关键,它指明...
  • pom.xml 配置 < dependency > ...<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script> ... var img=...多个文件异步同时上传 前端JSP
  • 线程中的同步和异步

    2021-03-03 21:06:57
    同步 发出一个功能调用的时候,在没有得到结果之前,就一直继续执行(事情要一件一件的做,等前一件事做完后才能做下一件) 举例 就像春运买火车票,一旦C窗口锁定第100张火车票,别的...需要注意的是,同步和异步都是
  • ActiveMQ工具类分享(关于同步回执和异步回执),本穷屌CSDN没币下载资源了,莫怪莫怪。后面会调整回来。。。 资源描述具体看文章啦。http://blog.csdn.net/kunloz520/article/details/78830656
  • JS同步和异步理解

    2020-07-08 14:31:38
    在做项目时用到了promise异步处理,发现自己对异步概念还是有些模糊,这位大佬总结很详细,拷下收藏 原文链接. 一、单线程 (1)单线程的概念 如果大家熟悉java,应该都知道,java是一门多线程语言,我们常常可以...
  • 总结了一下同步消息和异步消息的使用,为以后的学习做好打算 1,首先需要下载okhttp 的库import okhttp3.Callback; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import ...
  • ios23- 文件下载同步和异步

    千次阅读 2013-06-17 14:53:27
    同步 " );  NSError *err;   // 定义 url   NSString  *url= @"http://172.22.65.38/new/1.doc" ;   // 构建 NSURL   NSURL  *fileUrl=[ NSURL   URLWithString :url]; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 779
精华内容 311
关键字:

同步下载和异步下载