OC - 12.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]
OC - 12.NSURLRequest与NSURLConnection的更多相关文章
- 网络接口 使用NSURLConnection完成Get和Post方法
网络接口 使用NSURLConnection完成Get和Post方法 什么是URL: URL就是统一资源定位器(UniformResourceLocator:URL).通俗地说,它是用来指出某一项信息 ...
- iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,
今天在载入https网站的时候遇到例如以下的错误问题.所以对自己之前写的iOS内嵌webview做了一些改动,能够让它载入http网站也能够让它载入https网站. 以下是我载入https网站的时候出 ...
- NSURLRequest with UserAgent
关于iOS上的http请求还在不断学习,从早先的时候发现原来iOS的http请求可以自动保存cookie到后来的,发现ASIHttpRequest会有User-Agent,到现在发现竟然NSURLRe ...
- Ios之网络编程NSURLConnection
通过NSURLConnection主要通过四个类进行网络访问:NSURL,NSURLRequest,NSMutableURLRequest,NSURLConnection 一.基本知识 (1)NSUR ...
- NSURLConnection经常使用的代理方法
NSURLConnection的代理Protocol定义有三类:NSURLConnectionDelegate.NSURLConnectionDataDelegate和NSURLConnectionD ...
- NSURLConnection / NSURLSession/ SDWebImage
1. NSURLConnection (iOS9开始被弃用)=========================================== 此类的对象加载一个URL请求对象,通过异步/同步的方 ...
- iOS之微信支付
前言:下面介绍微信支付的开发流程的细节,图文并茂,你可以按照我的随笔流程过一遍代码.包你也学会了微信支付.而且支付也是面试常问的内容. 正文: 1.首先在开始使用微信支付之前,有一些东西是开发者必须要 ...
- NSURLCache
属性介绍: //获取当前应用的缓存管理对象 + (NSURLCache *)sharedURLCache; //设置自定义的NSURLCache作为应用缓存管理对象 + (void)setShared ...
- ReactiveCocoa基础知识内容
本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCoc ...
随机推荐
- JZ2440开发笔记(4)——设置静态IP
1. 配置静态ip地址 $sudo vim /etc/network/interfaces 原有内容只有如下两行: auto lo iface lo inet loopback 向末尾追加以下内容: ...
- SSE求解向量大小
float f=; __asm { mov esi, this ; vector u movups xmm0, [esi] ; first vector in xmm0 mulps xmm0, xmm ...
- oracle to_date函数(转载)
TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
- JavaScript删除数组重复元素的5个高效算法
之前一段时间一直在准备面试, 因而博客太久没更新: 现在基本知识点都复习完毕, 接下来就分享下 面试的一些常见问题: 去正规的互联网公司笔试.面试有很大的概率会碰到 使用javascript实现数组去 ...
- Maintainable JavaScript(编写可维护的JavaScript) PART I Style Guidelines
“Programs are meant to be read by humans and only incidentally( 顺便:偶然地:附带地) for computers to execute ...
- UML建模系列文章总结
本文转载:http://www.cnblogs.com/ywqu/tag/UML建模/ 本人总结: UML类图按照关系分为三大类:继承关系.拥有关系.整体与部分的关系. 继承关系:泛化.实现 拥有关系 ...
- eclipse mybatis Generator
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- IOS7 自定义UIBarButtonItem 的一些问题
ios 下自定义导航栏的BarButtonItem 会产生一些偏移问题, 解决方案: 通过新建一个系统的带固定距离的Item来调节你的Item #define IOS7_NAVI_SPACE ...
- C++ CheckListBox
实现过程 CCheckListBox listbox1; listbox1.AddString("葡萄"); listbox1.AddString(" ...
- Lucene教程具体解释
(建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ...