iOS开发网络篇—NSURLConnection基本使用(二)
2016-03-11 00:00
585 查看
1、常用的类
NSURL:请求地址
NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有:
一个NSURL对象
请求方法、请求头、请求体
请求超时
…...
NSMutableURLRequest:NSURLRequest的子类
NSURLConnection
负责发送请求,建立客户端和服务器的连接。
发送数据给服务器,并收集来自服务器的响应数据。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/59eb0a7243f67cf435af116747c180a4.png)
2、NSURLConnection发送请求,常见的发送请求(默认都是GET请求)方式(都是类方法哦)有以下几种:
2-1.第一种GET请求方法:直接通过同步或异步请求(一般都是使用不会堵塞的异步请求)
同步请求
+ (NSData*)sendSynchronousRequest:(NSURLRequest*)request
returningResponse:(NSURLResponse**)response error:(NSError**)error;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/21bb378e028cb2cde29fbe8f4e89cdfb.png)
异步请求
+ (NSData*)sendASynchronousRequest:(NSURLRequest*)request
returningResponse:(NSURLResponse**)response error:(NSError**)error;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/aca83482f677ef2001d1907951bab32a.png)
2-2.第二种GET请求方法:使用NSURLConnectDataDelegate协议中的代理方法 (默认都是GET请求)
<代理方法内部其实是异步请求,所以不会堵塞>
开始接收服务器的响应时调用
- (void)connection:(NSURLConnection*)connection
didReceiveResponse:(NSURLResponse*)response;
接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)
- (void)connection:(NSURLConnection*)connection
didReceiveData:(NSData*)data;
服务器返回的数据完全接收完毕后调用
- (void)connectionDidFinishLoading:(NSURLConnection*)connection;
请求出错时调用(比如请求超时)
- (void)connection:(NSURLConnection*)connection
didFailWithError:(NSError*)error;
总结:
连接(connection)开始接收响应,那么最后面的参数有response(响应)。
连接(connection)接收到数据,那么最后面的参数有data(数据)。
连接(connection)接收完毕(DidFinishLoading),那么最后面没有参数了。
连接(connection)请求错误,那么最后面的参数就是error(错误)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/4b096bb608d6fc5af4287463665f7b4e.png)
其中第三种方法需要调用start方法,前两种方法不需要。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/effc91b062722aa26a6e39f9104e3d04.png)
3、NSConnection发送POST请求,使用NSMutableURLRequest
NSMutableURLRequest是URLRequest的子类,常用的方法都是
设置“set”(只要敲出set就能导出相关方法)相关的方法:
设置请求超时等待时间(超过这个时间就算超时,请求失败)
-(void)setTimeoutInterval:(NSTimeInterval)seconds;
设置请求方法(比如GET和POST)
-(void)setHTTPMethod:(NSString *)method;
设置请求体
-(void)setHTTPBody:(NSData *)data;
设置请求头
-(void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
因为NSMutableURLRequest是Mutable的,所以可以重新设置请求方法,可以将之前默认GET方法设置为POST请求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/53d138a6df27ccb03cab01c66797c775.png)
如果服务器端需要接收客户端信息,那么可能就需要下面的setValue forHTTPHeaderField方法。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/05f71dca22d839c0b7e5c34d50f67e31.png)
额外积累:
interval 英 'ɪntəv(ə)l 美 'ɪntɚvl n. 间隔;间距;幕间休息
NSURL:请求地址
NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有:
一个NSURL对象
请求方法、请求头、请求体
请求超时
…...
NSMutableURLRequest:NSURLRequest的子类
NSURLConnection
负责发送请求,建立客户端和服务器的连接。
发送数据给服务器,并收集来自服务器的响应数据。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/59eb0a7243f67cf435af116747c180a4.png)
2、NSURLConnection发送请求,常见的发送请求(默认都是GET请求)方式(都是类方法哦)有以下几种:
2-1.第一种GET请求方法:直接通过同步或异步请求(一般都是使用不会堵塞的异步请求)
同步请求
+ (NSData*)sendSynchronousRequest:(NSURLRequest*)request
returningResponse:(NSURLResponse**)response error:(NSError**)error;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/21bb378e028cb2cde29fbe8f4e89cdfb.png)
异步请求
+ (NSData*)sendASynchronousRequest:(NSURLRequest*)request
returningResponse:(NSURLResponse**)response error:(NSError**)error;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/aca83482f677ef2001d1907951bab32a.png)
2-2.第二种GET请求方法:使用NSURLConnectDataDelegate协议中的代理方法 (默认都是GET请求)
<代理方法内部其实是异步请求,所以不会堵塞>
开始接收服务器的响应时调用
- (void)connection:(NSURLConnection*)connection
didReceiveResponse:(NSURLResponse*)response;
接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)
- (void)connection:(NSURLConnection*)connection
didReceiveData:(NSData*)data;
服务器返回的数据完全接收完毕后调用
- (void)connectionDidFinishLoading:(NSURLConnection*)connection;
请求出错时调用(比如请求超时)
- (void)connection:(NSURLConnection*)connection
didFailWithError:(NSError*)error;
总结:
连接(connection)开始接收响应,那么最后面的参数有response(响应)。
连接(connection)接收到数据,那么最后面的参数有data(数据)。
连接(connection)接收完毕(DidFinishLoading),那么最后面没有参数了。
连接(connection)请求错误,那么最后面的参数就是error(错误)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/4b096bb608d6fc5af4287463665f7b4e.png)
其中第三种方法需要调用start方法,前两种方法不需要。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/effc91b062722aa26a6e39f9104e3d04.png)
3、NSConnection发送POST请求,使用NSMutableURLRequest
NSMutableURLRequest是URLRequest的子类,常用的方法都是
设置“set”(只要敲出set就能导出相关方法)相关的方法:
设置请求超时等待时间(超过这个时间就算超时,请求失败)
-(void)setTimeoutInterval:(NSTimeInterval)seconds;
设置请求方法(比如GET和POST)
-(void)setHTTPMethod:(NSString *)method;
设置请求体
-(void)setHTTPBody:(NSData *)data;
设置请求头
-(void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
因为NSMutableURLRequest是Mutable的,所以可以重新设置请求方法,可以将之前默认GET方法设置为POST请求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/53d138a6df27ccb03cab01c66797c775.png)
如果服务器端需要接收客户端信息,那么可能就需要下面的setValue forHTTPHeaderField方法。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/05f71dca22d839c0b7e5c34d50f67e31.png)
额外积累:
interval 英 'ɪntəv(ə)l 美 'ɪntɚvl n. 间隔;间距;幕间休息
相关文章推荐
- GET/POST请求的使用《极客学院 --AFNetworking 2.x 网络解析详解--2》学习笔记
- iOS开发之网络数据解析(二)--XML解析简介
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
- iOS开发之网络编程--小文件下载
- iOS开发网络篇—GET请求和POST请求
- iOS开发之网络数据解析(一)--JSON解析简介
- iOS开发网络篇—网络编程基础(二)
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS开发之网络编程--XCode7 更新以来需要手动设置的内容
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
- iOS开发之网络数据解析--GDataXML解析框架的使用
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载
- IOS网络编程要学习的框架
- IOS开发之网络编程--文件压缩和解压缩
- iOS开发网络篇—HTTP协议
- iOS开发之网络编程--获取文件的MIMEType
- iOS开发网络篇—网络编程基础(一)
- iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载
- iOS开发网络篇—搭建本地服务器(待整理)
- iOS开发之网络数据解析--中文输出