首页 > 网站 > 建站经验 > 正文

iOS开发:ASIHT、TPRequest进度追踪

2019-11-02 14:14:15
字体:
来源:转载
供稿:网友

   本文为大家介绍了发ASIHTTPRequest进度追踪的内容,其中包括追踪单个request的下载进度,追踪一系列request的下载进度,追踪单个request的上传进度,追踪一系列request的上传进度,精确进度条vs简单进度条,自定义进度追踪等等内容。

  每个ASIHTTPRequest有两个delegate用来追踪进度:

  downloadProgressDelegate (下载) 和 uploadProgressDelegate (上载)。

  进度delegate可以是NSProgressIndicators (Mac OS X) 或者 UIProgressViews (iPhone).ASIHTTPRequest会自适应这两个class的行为。你也可以使用自定义class作为进度delegate,只要它响应setProgress:函数。

  如果你执行单个re

泥巴电影网[www.aikan.tv/special/nibadianyingwang/]
quest,那么你需要为该request设定upload/download进度delegate

  如果你在进行多个请求,并且你想要追踪整个队列中的进度,你必须使用ASINetworkQueue并设置队列的进度delegate

  如果上述两者你想同时拥有,恭喜你,0.97版以后的ASIHTTPRequest,这个可以有 ^ ^

  IMPORTANT:如果你向一个要求身份验证的网站上传数据,那么每次授权失败,上传进度条就会被重置为上一次的进度值。因此,当与需要授权的web服务器交互时,建议仅当useSessionPersistence为YES时才使用上传进度条,并且确保你在追踪大量数据的上传进度之前,先使用另外的request来进行授权。

  追踪小于128KB的数据上传进度目前无法做到,而对于大于128kb的数据,进度delegate不会收到第一个128kb数据块的进度信息。这是因为CFNetwork库API的限制。我们曾向apple提交过bug报告(bug id 6596016),希望apple能修改CFNetwork库以便实现上述功能。

  2009-6-21:Apple的哥们儿们真棒!iPhone 3.0 SDK里,buffer大小已经被减小到32KB了,我们的上传进度条可以更精确了。

  追踪单个request的下载进度

  这个例子中, myProgressIndicator是个 NSProgressIndicator.

  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

  [request setDownloadProgressDelegate:myProgressIndicator];

  [request startSynchronous];

  NSLog(@"Max: %f, Value: %f", [myProgressIndicator maxValue],[myProgressIndicator doubleValue]);

  追踪一系列request的下载进度

  在这个例子中, myProgressIndicator 是个 UIProgressView, myQueue是个 ASINetworkQueue.

  - (void)fetchThisURLFiveTimes:(NSURL *)url

  {

  [myQueue cancelAllOperations];

  [myQueue setDownloadProgressDelegate:myProgressIndicator];

  [myQueue setDelegate:self];

  [myQueue setRequestDidFinishSelector:@selector(queueComplete:)];

  int i;

  for (i=0; i<5; i++) {

  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

  [myQueue addOperation:request];

  }

  [myQueue go];

  }

  - (void)queueComplete:(ASINetworkQueue *)queue

  {

  NSLog(@"Value: %f", [myProgressIndicator progress]);

  }

  这个例子中,我们已经为ASINetworkQueues调用过[myQueue go]了。

  追踪单个request的上传进度

  在这个例子中, myProgressIndicator 是个 UIProgressView。

  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表