博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS网络请求类(NSURLCollection)
阅读量:7158 次
发布时间:2019-06-29

本文共 2393 字,大约阅读时间需要 7 分钟。

*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];}

 

转载于:https://www.cnblogs.com/3WWanXiang/p/4904770.html

你可能感兴趣的文章
关于Linux的时间与时区
查看>>
等待队列(转)
查看>>
Iphone通过viewDidLoad设置拉伸图像与按钮样式
查看>>
大数乘法——2016开发实习生腾讯模拟笔试编程题
查看>>
python: list转字符串
查看>>
欧拉函数-bzoj2818-简单推导
查看>>
console.log出来的信息不一定是真的
查看>>
使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化
查看>>
Day03_JAVA语言基础第三天
查看>>
高级类特性----接口(intertface)
查看>>
CD_Lulu软件著作权中软件分类号
查看>>
注解(二)模拟实体到数据库表字段的映射
查看>>
树状数组学习【数据结构--树状数组】
查看>>
让读书成为一种习惯
查看>>
php的json加密函数(php5.2以上免)
查看>>
new world !
查看>>
leetcode1100
查看>>
动态链接库的生成(dll)和 动态链接库隐式and显式调用
查看>>
一年内自学MIT的33门课? 疯狂学习有方法
查看>>
20050608:日志啊
查看>>