zoukankan      html  css  js  c++  java
  • NSURLSession的简单使用

    NSURLSession的简单使用(不同于NSURLConnection,仅仅支持异步请求)

    dataTask,简单请求直接block里面执行,不走代理

    NSURLSessionDataTaskDelegate:

    签订代理:

    -NSURLConfiguration *configuration = [NSURLConfiguration defaultConfiguration]

    -NSURLSession *session = [NSURLSession sessionWithConfiguration:delegate:queue:nil]

    实现相应的代理方法:

    -didRecieveResponse

    completionHander(…)

    三种类型:

    NSURLSessionResponseCancer = 0;默认,取消任务

    NSURLSessionResponseAllow = 1;任务继续执行

    NSURLSessionResponseBecomeDownload = 2;dataTask变为downloadTask

    根据response,拿到数据长度

    1.将response转为NSHTTPURLResponse

    2.获取响应头 NSDictionary *header = [httpResponse allHeaders];

    3.获取长度 CGFloat length = [header[@“Content-Length”] longlongValue];

    -didReceiveData

    收到data,举个例子,图片的渐进式加载

    1.[gData appendData];

    2.根据现有data更新imageSouceRef

    CGImageSourceUpdate(container,data,final:YES|NO);

    3.创建CGImageRef

    CGImageSourceCreateAtIndex(container,0,option:null);

    4.创建image

    UIImage *curImage = [UIImage imageWithCGImage:imageRef];

    5.释放imageRef

    CGImageRelease(imageRef);

    -didCompleteWithError

    任务完成后的相关处理

    NSURLDownloadDelegate

    代理方法:

    -didWriteData

    totalBytesWritten:当前写入的data

    totalBytesExpectedToWritten:总计要写入的data

    -didResumeAtOffset

    fileOffset:已经写入的流

    expectedTotalBytes:全部数据

    task的三种状态:

    resume,suspend,cancer

    -didFinishDownloadingToUrl

    location:临时的存储路径,使用fileManager移位

    1.创建路径 NSString *path  = [NSSearchDirectoryInDomain(NSCacheDirectory,NSUserDomainMask,YES) lastObject] stringByAppendingPathComponent:@“filename.type”];

    2.移位 [NSFileManager default] moveItemAtPath:location.path toPath:path error:]

    根据location拿到data

    NSData *data = [NSData dataWithContentsOfUrl:location];

    -didCompleteWithError

  • 相关阅读:
    HDU-4726 Kia's Calculation 贪心
    HDU-4725 The Shortest Path in Nya Graph 最短路
    HDU-4722 Good Numbers 数位DP
    HDU-4720 Naive and Silly Muggles 圆的外心
    golang-mysql
    golang web
    golang接口
    golang对象
    亲测可用的golang sql例程与包管理
    golang-练习3
  • 原文地址:https://www.cnblogs.com/xiaoerheiwatu/p/6723585.html
Copyright © 2011-2022 走看看