zoukankan      html  css  js  c++  java
  • ios-网络-ASIHTTPRequest并且设置缓存

    1.同步请求
    ASIHTTPRequest*request=  [ASIHTTPRequest requestWithURL:url];
        [request setRequestMethod:@"GET"];
        [request setTimeOutSeconds:50];
        [request startSynchronous];
        NSError *error=request.error;
        if (error==nil) {
           NSData *data= request.responseData;
           UIImage*image= [UIImage imageWithData:data];
            self.image=image;
            
        }else{
            NSLog(@"请求出错");
        }
        
    2.异步请求
    -(void)setImageURL:(NSURL *)url{
      ASIHTTPRequest*request=  [ASIHTTPRequest requestWithURL:url];
    
        [request setRequestMethod:@"GET"];
        [request setTimeOutSeconds:50];
        request.delegate=self;//这个是与同步请求不一样的地方
        [request startAsynchronous];
    }
    - (void)requestFinished:(ASIHTTPRequest *)request{
        NSData*imagedata= request.responseData;
       UIImage *image= [UIImage imageWithData:imagedata];
           self.image=image;  //监听还是主线程,所以不用跳
    }
    - (void)requestFailed:(ASIHTTPRequest *)request{
        NSLog(@"%@失败",request.error);
    }
    -(void)setImageURL:(NSURL *)url{
      ASIHTTPRequest*request=  [ASIHTTPRequest requestWithURL:url];
    
        [request setRequestMethod:@"GET"];
        [request setTimeOutSeconds:50];
        [request setCompletionBlock:^{
        NSData*imagedata= request.responseData;
        UIImage *image= [UIImage imageWithData:imagedata];
        self.image=image;
        }];
        [request startAsynchronous];
    }
    这个异步请求就没有设置代理,其代理方法用一个block代替了,每个代理方法都对应一个block
     CFNetwork  SystemConfiguration MobileCoreServices libz libxml2,用这个框架需要依赖这5个库
    最好用代理,不用block,虽然block是我的最爱,好像block会被重复相互抢引用而释放不了
     ASIDownloadCache *cache=[[ASIDownloadCache alloc]init];//创建一个缓存对象
        NSString * storecache=[NSHomeDirectory() stringByAppendingString:@"/Documents"];//设置沙盒下面的一个路径
        [cache setStoragePath:storecache];//设置缓存的存储路径
        [cache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];//设置缓存策略,只有不存在的时候才从网络上下载
        request.cacheStoragePolicy=ASICacheForSessionDurationCacheStoragePolicy;//设置这个缓存的请求策略,这个策略是绘画级别的,下次绘画会清空
        [request setDownloadCache:cache];//将这个缓存添加到这个请求

    //这个缓存好像在ios8里面不能用,没效果,缓存必须用post,get不顶用
    1.这里只记录一些学习笔记 2.这里只记录一些学习心得,如果心得方向有错,请留言 2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
  • 相关阅读:
    流畅的python,Fluent Python 第四章笔记
    Python中的eval()、exec()及其相关函数(转)
    给自己与初学者关于decode,encode的建议(啥utf-8,GBK)。
    流畅的python,Fluent Python 第三章笔记
    流畅的python,Fluent Python 第二章笔记
    python数组array.array(转帖)
    流畅的python,Fluent Python 第一章笔记
    流畅的Python第五章,一等函数笔记
    python中的__slots__使用极其定义(转)
    load
  • 原文地址:https://www.cnblogs.com/liyang31tg/p/3662926.html
Copyright © 2011-2022 走看看