异步下载SinnerYun

url定义:在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(UniformResourceLocator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。

*10.0.8.8/(服务器的地址(基地址),可以是ip地址也可以是域名)

*/my/user_list.php(服务器上特定资源(用户公开列表)的后续地址/接口名称)

*请求地址与参数之间用隔开,参数作为请求资源的限定条件;参数之间用&连接(参数格式:参数名称=参数类型对应的值)

*/

1,【同步下载,工作中从来不直接使用!!】

//对字符串封装成网址类

NSURL*url=[NSURLURLWithString:str];

//字符串的类方法,会自动根据url向服务器发起同步请求,并将请求结果返回。

//应用程序在启动之初,会自动开辟一个主线程,负责数据的初始化,视图的初始化以及视图的展示等,同步请求数据也在主线程中进行,如果耗时较长,会对主线程造成阻塞,用户体验极差

NSString*result=[NSStringstringWithContentsOfURL:urlencoding:NSUTF8StringEncodingerror:nil];

NSData*data=[resultdataUsingEncoding:NSUTF8StringEncoding];

NSDictionary/NSArray(根据数据结构选择最外层容器)*myResult=[NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

把结果放到tableView中(uid/username)

2,系统自带异步下载流程

[UIApplicationsharedApplication].networkActivityIndicatorVisible=YES;

//状态栏的旋转小菊花

//根据url,生成一个请求对象

NSURLRequest*request=[NSURLRequestrequestWithURL:url];

//[NSURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:20];

//利用请求对象,创建一个NSURLConnection对象,connection对象会在客户端与服务端之间建立一个连接,并将request由客户端发到服务端

//异步:主线程负责数据的初始化,视图的初始化和界面的展示等,NSURLConnection进行数据请求的时候,会在主线程之外,单独开辟一个线程进行与服务器的交互,和接收服务器数据等耗时的操作,当数据接收完毕后,会通过代理方法自动回到主线程。我们可以在主线程进行后续的数据解析和视图刷新的操作

-(id)initWithRequest:(NSURLRequest*)requestdelegate:(id)delegate;

+(NSURLConnection*)connectionWithRequest:(NSURLRequest*)requestdelegate:(id)delegate;

//2种方法开始连接+方法/-方法

代理方法

//常用的4个:1,开始响应。2,传输数据。3,成功。4,失败

//客户端收到服务端对request的响应时,调用此方法

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

{

//开始下载前清空里面的旧数据

[_downloadDatasetLength:0];

}

//当客户端收到服务端根据request传递过来的数据时(接收数据的过程),调用此方法

//可能被调用多次

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

[_downloadDataappendData:data];

//客户端接收数据完毕后,调用此方法

-(void)connectionDidFinishLoading:(NSURLConnection*)connection

//将_downloadData转化成数据源然后刷新tableView

[_myTableViewreloadData];

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

NSLog(@"联网失败,或者数据传输超时");

中途取消下载的方法

-(void)cancel;//取消连网

3,【SDWebImage】

一个非常牛b的第三方图片下载库,实现了图片的异步,并发下载,并且有缓存功能

封装的是一个category

#import"UIImageView+WebCache.h"

//2个最常用的方法:加载一个网络图片,且自动缓存

//一个有默认图片,一个没有

-(void)setImageWithURL:(NSURL*)url;

-(void)setImageWithURL:(NSURL*)urlplaceholderImage:(UIImage*)placeholder;

4,【ASIHTTPRequest】以前非常流行的下载类,现在已经不更新了,逐渐被淘汰中

ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:[NSURLURLWithString:str]];

//设置代理

request.delegate=self;

//不同的request对象,可以通过不同的tag值来标记

request.tag=100;

//向服务器发起异步数据请求

[requeststartAsynchronous];

需要+4个framework

代理方法,2个一个成功,一个失败

//当数据获取完毕后,调用此方法

-(void)requestFinished:(ASIHTTPRequest*)request

//不同的request对象通过tag值来区分,进而进行不同的后续处理

if(request.tag==100){

//请求下来的数据都存在responseData属性中

if(request.responseData){

//可以直接获得字符串,但实际开发中,一般都用data然后json解析

NSString*result=request.responseString;

NSLog(@"结果:%@",result);

//获取数据失败时,或者网络不可以时,调用此方法

-(void)requestFailed:(ASIHTTPRequest*)request

NSLog(@"错误:%@",[request.errordescription]);

#import"ViewController.h"

@interfaceViewController()

NSMutableArray*_dataArr;

UITableView*_myTableView;

@end

@implementationViewController

-(void)viewDidLoad

[superviewDidLoad];

//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.

NSLog(@"1111");

//从网络获取数据(同步的,工作中严禁使用)

NSData*data=[NSDatadataWithContentsOfURL:[NSURLURLWithString:urlStr]];

NSLog(@"222");

//将符合json格式的数据转化成字典(或数组,根据数据的最外层)

NSDictionary*dic=[NSJSONSerializationJSONObjectWithData:dataoptions:0error:nil];

_dataArr=[dicobjectForKey:@"users"];

_myTableView=[[UITableViewalloc]initWithFrame:self.view.bounds];

_myTableView.delegate=self;

_myTableView.dataSource=self;

[self.viewaddSubview:_myTableView];

#pragmamark-tableView

-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section

return_dataArr.count;

-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath

staticNSString*identifier=@"cellID";

UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:identifier];

if(!cell){

cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:identifier];

NSDictionary*dic=[_dataArrobjectAtIndex:indexPath.row];

cell.textLabel.text=[dicobjectForKey:@"uid"];

cell.detailTextLabel.text=[dicobjectForKey:@"username"];

returncell;

-(void)didReceiveMemoryWarning

[superdidReceiveMemoryWarning];

//Disposeofanyresourcesthatcanberecreated.

@interfaceViewController()

NSMutableData*_downloadData;

//网址的字符串

//转成NSURL网址类的对象

NSURL*url=[NSURLURLWithString:urlStr];

NSURLRequest*request=[NSURLRequestrequestWithURL:urlcachePolicy:0timeoutInterval:15];

NSLog(@"111");

//用来接收下载的数据

_downloadData=[[NSMutableDataalloc]init];

_dataArr=[[NSMutableArrayalloc]init];

//开始网络请求

[NSURLConnectionconnectionWithRequest:requestdelegate:self];

_myTableView.separatorColor=[UIColorredColor];

#pragmamark-connection

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

//每次开始响应的时候清空数据

_downloadData.length=0;

NSLog(@"接收数据,可能会被调用多次");

//下载一点放一点

NSLog(@"网络请求已完成");

NSDictionary*dic=[NSJSONSerializationJSONObjectWithData:_downloadDataoptions:0error:nil];

_dataArr.array=[dicobjectForKey:@"users"];

//数据下载完成以后,需要刷新tv

NSLog(@"网络请求失败:%@",error);

-(CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath:(NSIndexPath*)indexPath

return80;

UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:@"qqq"];

cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:@"qqq"];

UIImageView*iv=[[UIImageViewalloc]initWithFrame:CGRectMake(200,10,60,60)];

iv.tag=1;

[cell.contentViewaddSubview:iv];

UIImageView*iv=(UIImageView*)[cell.contentViewviewWithTag:1];

//头像的网址

//为一个iv加载网络图片,自带缓存

[ivsetImageWithURL:[NSURLURLWithString:imageUrlStr]];

-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath

[tableViewdeselectRowAtIndexPath:indexPathanimated:YES];

NSLog(@"uid=%@",[[_dataArrobjectAtIndex:indexPath.row]objectForKey:@"uid"]);

ASI----------------------------------------------------------------

#import"ASIHTTPRequest.h"

@interfaceViewController()

//创建asi的网络请求

//开始异步下载

//下载成功

//打印下载的字符串

//NSLog(@"%@",request.responseString);

//request.responseData:下载的数据

NSDictionary*dic=[NSJSONSerializationJSONObjectWithData:request.responseDataoptions:0error:nil];

THE END
1.异步社区免费电子书下载爬虫实验攻略本文详细介绍了如何使用Python爬虫抓取异步社区《基于Python的金融分析与风险管理(第2版)》的免费电子书页面。通过分析网页结构,找到动态加载的图片URL规律,利用开发者工具发现关键请求URL,解析JSON数据获取图片链接,并实现图片的下载保存。教程适合有一定Python基础的读者,无需前后端技术即可实现。 https://blog.csdn.net/oJinGangZuan/article/details/125687876
2.python异步下载笔趣阁小说爬虫吾爱破解自学了一点python爬虫,代码写的不是那么好看,但效果挺不错的,自己亲测下载速度可以达到100章每秒。爬https://www.52pojie.cn/forum.php?mod=viewthread&tid=1904106
3.电子书下载大全在线阅读异步社区为您提供电子书下载,提供电子书大全和在线阅读服务,是您自学的必读好书。 UI动效大爆炸——After Effects移动UI动效制作学习手册 选择的艺术:Photoshop图像处理深度剖析(第4版) 中文版3ds Max 2021完全自学教程 游戏场景设计专业技法解析 中文版CorelDRAW 2021完全自学教程 https://www.shuyishe.com/ebook
4.电子书下载大全在线阅读图书 电子书 课程 VIP会员 书课包 电子书 异步社区为您提供电子书下载,提供电子书大全和在线阅读服务,是您自学的必读好书。 人工智能:现代方法(第4版)(精装版) 遥感干涉高光谱成像仪定标技术 深入解析Windows操作系统 (第7版)(卷2) CCNP企业高级路由ENARSI 300-410认证考试指南 深度学习:从基础到https://www.epubit.com/ebook
5.电子书下载大全在线阅读异步社区为您提供电子书下载,提供电子书大全和在线阅读服务,是您自学的必读好书。 态度改变与社会影响(中译本修正版) 观星指南: 不可不知的298个天文观测知识与技巧 证券技术分析:市场结构、价格行为和交易策略 测试在线编撰 电商图书测试 动画师工作手册:动作分解 http://d57c0107.ptpress.cn/ebook
6.图解仓颉编程:基础篇(异步图书出品)pdf,mobi,epub,txt,百度云盘超值资源与服务大放送: 可完整运行的示例源代码 全彩印刷的知识脉络图、学习路径图 动态更新的仓颉新版本新技术视频 与作者交流活动的平台及答疑服务 仓颉编程语言是华为自研的面向全场景应用开发的通用编程语言。为了帮助广大的学习者系统地学习仓颉编程语言,我们倾力打造了图解仓颉编程系列图书。 https://read678.com/JdBook/index/46310
7.奇点来临epubpdfmobitxt电子书下载2024出版社: 人民邮电出版社 ISBN:9787115420244 版次:1 商品编码:11935308 品牌:异步图书 包装:精装 开本:16开 出版时间:2016-05-01 用纸:胶版纸 页数:155 正文语种:中文 奇点来临 epub pdf mobi txt 电子书 下载 2024 类似图书 点击查看全场最低价 相关书籍 https://book.tinynews.org/books/11935308
8.Java异步编程实战2024pdfepubmobi电子书资深Java技术工程师,就职于淘宝,有多年的Java研发经验,在Java并发编程、异步编程等方面有深入研究和积累。对JUC包源码有深入的理解,熟悉常用开源框架实现原理。 著有畅销书《Java并发编程之美》。 Java异步编程实战 电子书 图书目录 下载链接在页面底部 点击这里下载 facebook linkedin mastodon messenger pinterest rehttps://onlinetoolsland.com/books/34920246
9.异步社区e读版电子书和在线编程练习环境领取方式电子画册异步社区e读版电子书和在线编程练习环境领取方式 作者: 云展网用户 免费制作 更多内容异步社区e读版电子书和在线编程练习环境领取方式 发布时间:2023-4-01 | 云展网企业宣传册制作 宣传册 其他 异步社区e读版电子书和在线编程练习环境领取方式 关注 云展网用户 粉丝: 0 百万用户使用云展网进行手机电子书制作https://www.yunzhan365.com/basic/77334748.html
10.免费下载计算机电子书的网站,rpa,机器人,自动化知乎|10个程序员必备免费电子书下载网站 这是个免费电子书下载网站,你不仅可以在上面下载资源,还可以在上面发布你的书籍,写博客,当然还可以买书,是一个综合itpanda.netIT熊猫-计算机书籍下载2020年6月30日?·?本书是一本广受好评的Cassandra 图书。 与传统的关系型数据库不同,Cassandra 是一种开源的分布https://wdlinux.cn/html/biancheng/20241117/16626.html
11.图书批量下载器合集下载图书批量下载器专题下载图书批量下载器聚合阅读合集,主要是提供图书批量下载器相关最新资源下载,您可以在订阅图书批量下载器标签专题后,可以第一时间了解图书批量下载器最新下载资源和专题,包括最新图书批量下载器下载和图书批量下载器排行榜等,快来绿色先锋下载关注图书批量下载器相关合集吧。 https://www.greenxf.com/tag/tushupiliangxiazaiqi.html
12.JavaScript高级程序设计第4版中文PDF完整版电子书下载购买链接:京东异步社区 网友评分: 360通过腾讯通过金山通过 13.6MB 广告 商业广告,理性选择广告 商业广告,理性选择广告 商业广告,理性选择广告 商业广告,理性选择 详情介绍 JavaScript高级程序设计(第4版)是JavaScript经典图书的新版。第4版涵盖ECMAScript 2019,全面、深入地介绍了JavaScript开发者必须掌握的前端开发技术,https://www.jb51.net/books/842850.html
13.详细指南:如何高效下载各种网络资源Ebooks平台在开始下载之前,首先需要了解不同类型的资源。资源可以分为以下几类: 学术资源(Academic Resources) 包括期刊文章、研究论文、学位论文等,通常可以在学术数据库中找到。 电子书和文档(E-books and Documents) 电子书和PDF文档是常见的阅读材料,通常可以在图书馆或在线书店下载。 https://it.sohu.com/a/824716612_122077424
14.异步图书的微博异步图书 7月25日 09:32 来自微博网页版 #新书上架# 《大模型导论》抢占AI风口,手把手教你大模型开发,从基础概念入手,逐步深入技术原理和应用,实战案例讲解,附赠课件+源码+视频,多名院士联袂推荐。本书主要介绍了大模型的发展与演变、相关技术、应用场景、未来发展趋势和前景。本书首先回顾了大模型技术的起源和https://weibo.com/ptpitbooks
15.动手深度学习PyTorch(第二版)前往下载作者: 阿斯顿·张(Aston Zhang) / 李沐(Mu Li) / [美] 扎卡里·C. 立顿(Zachary C. Lipton) / [德] 亚历山大·J. 斯莫拉(Alexander J. Smola) 出版社: 人民邮电出版社 出品方: 异步图书 译者: 何孝霆(Xiaoting He) / 瑞潮儿·胡(Rachel Hu) 出版年: 2023-2 页数: 604 装帧: 平装 丛书https://www.7b4.net/28779.html
16.异步图书Internal Server Errorhttp://www.epubit.cn/