IOS网络请求类(NSURLCollection)

*NSURLCollection ios9已废弃

一.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];
}
时间: 2024-10-11 22:31:02

IOS网络请求类(NSURLCollection)的相关文章

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS网络请求框架:MKNetWorkKit的使用

MKNetWorkKit是由一个印度小伙子写的,是用于网络请求的库,支持ARC,我fork了一下,代码的网址这里给出. 本人fork作者代码地址(DoubleYi):https://github.com/DoubleYi/MKNetworkKit 作者源码地址(MugunthKumar):https://github.com/MugunthKumar/MKNetworkKit 作者关于类库介绍的地址(MugunthKumar):http://blog.mugunthkumar.com/produ

ios网络请求3840错误的问题

ios网络请求3840错误的问题 by 伍雪颖 Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn't be completed. (Cocoa error 3840.)" (Unterminated string around character 11080.) UserInfo=0x171065d00 {NSDebugDescription=Unterminated string around charac

block传值以及利用block封装一个网络请求类

1.block在俩个UIViewController间传值 最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解.我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavi

基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类

这段时间做新的Android项目的客户端和和REST API通讯框架架构设计,使用了很多新技术,最终的方案也相当简洁优雅,客户端只需要传Java对象,服务器端返回json字符串,自动解析成Java对象, 无状态安全验证基于JWT实现,JWT规范的细节可以参考我前面的文章.JWT的token和数据防篡改签名统一放在HTTP Header中,这样就实现了对请求内容和返回结果的无侵入性,服务器端也可以在全局过滤器中统一处理安全验证. Android客户端使用了Volley网络请求框架和Gson解析库,

iOS 网络请求NSURLSession

iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载系统的彻底重构. 现在已经有人在深入苹果的网络层基础架构的地方做研究了,所以我想是时候来分享一些对于我对于这些新的 API 的看法和心得了,新的 API 将如何影响我们编写程序,以及它们对于 API 设计理念的影响. NSURLConnection 作为 Core Foundation / CFNetwork 框架的 API 之上的一个抽象,在 2003 年,随着第一版的 S

iOS 网络请求 笔记

有关网络请求的类(该图片来自:developer.apple.com) 一.url请求 网络请求的组成部分有服务器地址.请求参数,以及请求方式.在iOS中,一个网络请求用NSURLRequest(或者其子类NSURLMutableRequest)来表示. NSURLRequest适合于get请求,NSURLMutableRequest可以是post请求. get方式下,服务器地址和请求参数都可以明文包含在url中,可以直接使用这个url来创建NSURLRequest(或者NSURLMutable

造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层做一次网络请求通常关心的问题有例如以下几个: 怎样在任何位置发起网络请求. 表单创建. 包括请求地址.请求方式(GET/POST/--).请求头等-- 载入遮罩. 目的是堵塞 UI 交互,同一时候告知用户操作正在进行. 比方提交表单时在提交按钮上显示 "菊花",同一时候使其失效. 载入进度

造轮子 | 如何设计一个面向协议的 iOS 网络请求库

最近开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 需要干些啥 对于大部分 App 而言,业务层做一次网络请求通常关心的问题有如下几个: 如何在任意位置发起网络请求. 表单创建.包含请求地址.请求方式(GET/POST/--).请求头等-- 加载遮罩.目的是阻塞 UI 交互,同时告知用户操作正在进行.比如提交表单时在提交按钮上显示 "菊花",同时使其失效. 加载进度展示.下载上传图片