• IOS网络请求类(NSURLCollection)


    *NSURLCollection ios9已废弃

    在Xcode 7 上需要在info.plist里添加ATS,允许所有(用souse 打开)

        <key>NSAppTransportSecurity</key>

        <dict>

            <key>NSAllowsArbitraryLoads</key>

            <true/>

        </dict>

    即可

    一.NSURL对象初始化注意:

         1.url里面有空格。

         2.url里面不能有汉字。

         3.如果里面有汉字需要编码

         urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    二.异步请求方式

    1> + sendAsynchronousRequest

    // 1.创建地址
        NSString *urlStr = @"http://d3.s.hjfile.cn/2012/201202_3/43904b09-24e1-4fdb-8b46-d3dba3323278.mp3";
        // 2.创建url
            urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSURL *url = [NSURL URLWithString:urlStr];
        // 3.创建NSURLRequest
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        // 4.开始请求数据
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
            NSLog(@"%@",data);
        }];

    2> + connectionWithRequest delagete 需要遵守代理方法<NSURLConnectionDataDelegate,NSURLConnectionDelegate>

    // 第二种
    - (void)viewDidLoad {
        [super viewDidLoad];
        [NSURLConnection connectionWithRequest:request delegate:self];
        
    }
    #pragma mark - NSURLConnection 代理方法
    // 收到请求
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        // 1.获得文件名称
        NSString *fileName = [response suggestedFilename];
        // 2.文件大小
        long long fileSize = [response expectedContentLength];
        // 3.文件类型
        NSString *fileType = [response MIMEType];
        // 4.状态码(需要转化)
        // 404,403,500,200
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        NSInteger code  = httpResponse.statusCode;
        // 5.响应头信息
        NSDictionary *body = [httpResponse allHeaderFields];
        
    }
    
    // 接收到数据
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        //1.追加数据
        //2.计算进度
        //3.刷新界面
        //4.写入数据
    }
    // 请求失败
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        
    }
    // 请求完成
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        //1.刷新界面
        //2.数据解析和封装数据模型
    }

    3> 需要创建对象,手动执行,遵守代理<NSURLConnectionDataDelegate,NSURLConnectionDelegate>

    // 第三种
    - (void)viewDidLoad {
        [super viewDidLoad];
        // 1.先创建对象
    
        NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    
        // 2.手动执行,代理方法
    
        [connection start];
    }
  • 相关阅读:
    吴裕雄--天生自然 R语言开发学习:模块包的安装命令
    玩转大数据系列之一:数据采集与同步
    阿里云弹性容器实例产品 ECI ——云原生时代的基础设施
    阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
    阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
    云HBase备份恢复,为云HBase数据安全保驾护航
    阿里云图数据库GraphDB上线,助力图数据处理
    免费带你体验阿里巴巴旗舰大数据计算产品MaxCompute
    如何快速打造一款高清又极速的短视频APP?
    视频云肖长杰:视频AI科技助力短视频生态
  • 原文地址:https://www.cnblogs.com/3WWanXiang/p/4904770.html
Copyright © 2020-2023  润新知