iOS网络-01-NSURLRequest与NSURLConnection
NSURLRequest
NSURLRequest封装了一次网络请求所需要的数据,主要封装了以下信息:
- 请求路径(URL)
- 请求方法(GET或POST)
- 请求头
- 请求体
- 超时参数
NSURLRequest与其子类NSMutableURLRequest
- NSURLRequest的所有的请求信息拼接在请求路径(URL)的后面
- NSMutableURLRequest的请求路径与其他的请求信息分开,其他请求信息通过对应的Key对请求对象进行设置
- NSURLRequest通常用于GET请求
- NSMutableURLRequest通常用于POST请求
NSURLRequest封装一次网络请求的的步骤
//1.创建请求路径
NSString *strURL = [NSString stringWithFormat:@"(此处为URL)/login?username=%@&pwd=%@", @"用户名", @"密码"];
NSURL *url = [NSURL URLWithString:];
//2.根据请求路径封装请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSMutableURLRequest封装一次网络请求的的步骤
//1.创建请求路径
NSURL *url = [NSURL URLWithString:@"(此处为URL)/login"];
//2.创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//3.设置请求方法
request.HTTPMethod = @"POST";
//4.设置请求参数
request.HTTPBody = [@"username="用户名"&pwd="密码" dataUsingEncoding:NSUTF8StringEncoding];
//5.设置超时
request.timeoutInterval = 5;
NSURLConnection
NSURLConnection发送请求的步骤
- 创建请求路径(NSURL)
- 将请求路径封装成请求对象(NSURLRequest),设置其他请求参数
- 使用NSURLConnection发送同步/异步请求
NSURLConnection的代理
NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
/**
*遇到错误的时候调用,请求终止
*/
NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
/**
*接收到服务器响应的时候调用
*response的中包含了服务器的响应信息,比较有价值是此次请求的数据的总长度
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
/**
*接收到服务器的数据的时候调用,若数据较多会多次调用
*通常在该方法中对服务器返回的数据进行存储
*也可以在该方法中计算下载进度
*/
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
/**
*数据加载完毕的时候调用
*/
NSURLConnectionDownloadDelegate
- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
/**
*每次向沙盒中写文件都会调用该方法
*/
- (void)connectionDidResumeDownloading:(NSURLConnection *)connection totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
/**
*该方法是支持断点下载的核心
*/
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL
/**
*由于:下载的文件保存在tmp文件夹中,该文件夹中的数据会被系统定时删除
*所以该方法必须实现,用于将改变数据的存储位置
*/
NSURLConnection的请求方式
同步请求(线程会被阻塞)
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
/**
*data:服务器返回的数据,即请求的数据
*request:请求请求对象
*response:服务器的响应数据
*error:错误信息
*/
异步请求
//方法一(block)
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
/**
*请求完成回调的block,参数的含义与铜鼓请求相同
*/
}];
//方法二(代理)
[NSURLConnection connectionWithRequest:request delegate:self]
/**
*自动发送请求
*/
NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
/**
*需要手动发送请求
*/
URL中的中文处理
URL中的中文通要进行处理,通常使用UTF-8编码
//进行如下转码
[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
iOS网络-01-NSURLRequest与NSURLConnection的更多相关文章
- iOS网络学习之“远离NSURLConnection 走进NSURLSession”
目前,在iOS的开发中,NURLConnection已经成为了过去式,现在的NSURLConnection已经deprected(iOS7之后),取而代之的是NSURLSession.而且AFNetw ...
- iOS网络1——NSURLConnection使用详解
原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...
- iOS网络NSURLConnection使用详解
一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetworkin ...
- ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- iOS网络相关知识总结
iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...
- IOS 网络请求
技术交流新QQ群:414971585 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看 ...
- IOS 网络请求方式
iOS开发中的网络请求 今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...
- ios网络学习------4 UIWebView的加载本地数据的三种方式
ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...
- ios网络学习------6 json格式数据的请求处理
ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...
- iOS网络相关零散知识总结
iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径 ...
随机推荐
- codeforces B. Friends and Presents(二分+容斥)
题意:从1....v这些数中找到c1个数不能被x整除,c2个数不能被y整除! 并且这c1个数和这c2个数没有相同的!给定c1, c2, x, y, 求最小的v的值! 思路: 二分+容斥,二分找到v的值 ...
- java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字
前段时间因为工作需要,要实现将一段文字或者url生成二维码,然后中间附上logo,下方正中间附上文字的功能. 上网找了几篇教程学习了下,由于没有保存借鉴的博文链接,所以就没po上参考文章的链接啦,感谢 ...
- 启动weblogic的错误:Could not obtain an exclusive lock to the embedded LDAP data files directory
http://hi.baidu.com/kaisep/item/0e4bf6ee5da001d1ea34c986 源地址 启动weblogic的错误:Could not obtain an exclu ...
- 利用 word2vec 训练的字向量进行中文分词
最近针对之前发表的一篇博文<Deep Learning 在中文分词和词性标注任务中的应用>中的算法做了一个实现,感觉效果还不错.本文主要是将我在程序实现过程中的一些数学细节整理出来,借此优 ...
- UliPad 初体验----python 开发利器
学习python 有段时间,最近博客更新比较慢了,空闲时间在零零碎碎的学python ,难成文,也就没整理成博客. 学习python 最苦恼的就是没有趁手IDE ,之前学java 时 Eclipse ...
- 《HelloGitHub月刊》第01期
<HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...
- Node.js爬虫抓取数据 -- HTML 实体编码处理办法
cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现 2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时, ...
- DBSet Class(EF基础系列11)
Method Name Return Type Description Add Added entity type Adds the given entity to the cont ...
- 控制器中的Action方法,接收浏览器传过来的参数,总共有几种?
1.根据配置文件中的URL规则 public ActionResult Delete(int id) //id参数就是根据路由里面的参数id来传过来的,这个action方法中的参数一定要和路由中的id ...
- 双系统Ubuntu无法访问windows磁盘分区解决方法
为了更好的体验各种操作系统,在电脑中安装双系统是很好的选择,但在使用中难免会遇到这样或那样的问题. 最近总是遇到Ubuntu系统下无法访问windows磁盘分区问题,看了系统日志发现是挂载磁盘出问题了 ...