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.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)