• 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.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
  • 相关阅读:
    openstack 网络架构 nova-network + neutron
    编程算法
    16周(项目四 动态数组)
    iptables惹的祸
    【剑指offer】和为定值的连续正数序列
    root用户改动普通用户文件
    Android学习四、Android中的Adapter
    初探swift语言的学习笔记四(类对象,函数)
    crtmpserver 基本流程分析
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/liyang31tg/p/3662926.html
Copyright © 2020-2023  润新知