iOS原生网络请求使用总结
2015-02-10 15:24
316 查看
开发中,少不了与网络打交道,在使用原生网络请求开发过程时,总是会使用到如下三个对象NSURL,
NSURLRequest,NSURLConnection。
访问URL步骤
1、构造NSURL,,使用NSURL构造一个URL
2、生成一个NSURLRequest,使用NSURLRequest构造一个请求
3、通过NSURLConnection发送请求,使用NSURLConnection发送一个请求,并返回数
4、通过返回的NSURLResponse和NSError分析结果
,使用NSURLResponse和NSError来监测响应和错误信息
1、NSURL
NSURL是网络请求时需要用到的网络地址。
如何构造一个url,既有+方法,也有-方法
1-1、+方法
+ (id)URLWithString:(NSString *)URLString
+ (id)URLWithString:(NSString *)URLString relativeToURL: (NSURL *)baseURL
+ (id)fileURLWithPath:(NSString *)path isDirectory: (BOOL)isDir
+ (id)fileURLWithPath:(NSString *)path
1-2、-方法
- (id)initWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString
*)path
- (id)initWithString:(NSString *)URLString
- (id)initWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL
- (id)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
- (id)initFileURLWithPath:(NSString *)path
如:NSURL *urlHao123 = [NSURL URLWithString:@"http://www.hao123.com"];
2、NSURLRequest
封装了一个针对某个URL的请求信息,可以指明内容的缓存策略构造URL请求。包括不可变请求NSURLRequest,或
可变请求NSMutableURLRequest。
2-1、不可变的请求NSURLRequest
2-1-1、+方法
+ (id)requestWithURL:(NSURL *)theURL
+ (id)requestWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy
timeoutInterval:
(NSTimeInter val)timeoutInterval
2-1-2、-方法
- (id)initWithURL:(NSURL *)theURL
- (id)initWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy timeoutInterval:
(NSTimeInter val)timeoutInterval
2-2、可修改的URL请求NSMutableURLRequest
如果需要在初始化后仍能对URL请求对象进行修改,可以使用NSMutableURLRequest,可以修改的项目包括:
缓存策略
超时时间
URL对象
主文档地址
头信息
上行内容
请求方法
Cookie
2-3、支持的缓存策略
NSURLRequestUseProtocolCachePolicy
NSURLRequestReloadIgnoringLocalCacheData
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
NSURLRequestReloadIgnoringCacheData
NSURLRequestReturnCacheDataElseLoad
NSURLRequestReturnCacheDataDontLoad
NSURLRequestReloadRevalidatingCacheData
3、NSURLConnection
发送请求:可以使用同步或异步的方式发送一个请求,两者的结果
返回内容不同
3-1、同步请求
+
(NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse
**)response
error:(NSError **)error
最快捷的方式,但是不能监控内容下载过程
3-2、异步请求
不影响当前正在进行操作
,且请求回来的数据分多次按顺序返回
3-2-1、代码块异步请求
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError));
3-2-2、代理方法异步请求
异步请求步骤:
3-2-2-1、构造连接对象(NSURLConnection)
+ (NSURLConnection *)connectionWithRequest: (NSURLRequest *)request delegate:(id)delegate
-
(id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate
-
(id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate startImmediately:(BOOL)startImmediately
3-2-2-2、发送请求
-
(void)start
-
(void)cancel
3-2-2-3、使用委托监控数据返回过程
3-2-2-3-1、请求开始
-
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
3-2-2-3-2、请求接收数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
3-2-2-3-3、请求完成
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
3-2-2-3-4、请求失败
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
3-2-2-4、将多次返回的数据连接成同一个数据对象
3-2-2-5、使用连接后的数据对象
4、数据信息处理
4-1、返回数据的处理
返回数据封装以NSData
一般将其转换为NSString后,才进行处理
NSString类中常用的转换方法:
-
(id)initWithData:(NSData *)data encoding: (NSStringEncoding)encoding
4-2、响应信息的处理
4-2-1、NSURLResponse
NSURLRequest对应的响应的元信息封装在NSURLResponse中
-
(long long)expectedContentLength
-
(NSString *)suggestedFilename
-
(NSString *)MIMEType
-
(NSString *)textEncodingName
-
(NSURL *)URL
4-3、错误信息的处理
NSError错误的处理
如果请求过程中发生错误,导致请求无法完成,则
error对象不为nil
-
(NSString *)localizedDescription
5、支持协议:
5-1、文件传输协议(ftp://)
5-2、超文本传输协议(http://)
5-3、安全128-bit超文本传输协议(https://)
5-4、本地文件路径(file:///)
NSURLRequest,NSURLConnection。
访问URL步骤
1、构造NSURL,,使用NSURL构造一个URL
2、生成一个NSURLRequest,使用NSURLRequest构造一个请求
3、通过NSURLConnection发送请求,使用NSURLConnection发送一个请求,并返回数
4、通过返回的NSURLResponse和NSError分析结果
,使用NSURLResponse和NSError来监测响应和错误信息
1、NSURL
NSURL是网络请求时需要用到的网络地址。
如何构造一个url,既有+方法,也有-方法
1-1、+方法
+ (id)URLWithString:(NSString *)URLString
+ (id)URLWithString:(NSString *)URLString relativeToURL: (NSURL *)baseURL
+ (id)fileURLWithPath:(NSString *)path isDirectory: (BOOL)isDir
+ (id)fileURLWithPath:(NSString *)path
1-2、-方法
- (id)initWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString
*)path
- (id)initWithString:(NSString *)URLString
- (id)initWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL
- (id)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
- (id)initFileURLWithPath:(NSString *)path
如:NSURL *urlHao123 = [NSURL URLWithString:@"http://www.hao123.com"];
2、NSURLRequest
封装了一个针对某个URL的请求信息,可以指明内容的缓存策略构造URL请求。包括不可变请求NSURLRequest,或
可变请求NSMutableURLRequest。
2-1、不可变的请求NSURLRequest
2-1-1、+方法
+ (id)requestWithURL:(NSURL *)theURL
+ (id)requestWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy
timeoutInterval:
(NSTimeInter val)timeoutInterval
2-1-2、-方法
- (id)initWithURL:(NSURL *)theURL
- (id)initWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy timeoutInterval:
(NSTimeInter val)timeoutInterval
2-2、可修改的URL请求NSMutableURLRequest
如果需要在初始化后仍能对URL请求对象进行修改,可以使用NSMutableURLRequest,可以修改的项目包括:
缓存策略
超时时间
URL对象
主文档地址
头信息
上行内容
请求方法
Cookie
2-3、支持的缓存策略
NSURLRequestUseProtocolCachePolicy
NSURLRequestReloadIgnoringLocalCacheData
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
NSURLRequestReloadIgnoringCacheData
NSURLRequestReturnCacheDataElseLoad
NSURLRequestReturnCacheDataDontLoad
NSURLRequestReloadRevalidatingCacheData
3、NSURLConnection
发送请求:可以使用同步或异步的方式发送一个请求,两者的结果
返回内容不同
3-1、同步请求
+
(NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse
**)response
error:(NSError **)error
最快捷的方式,但是不能监控内容下载过程
3-2、异步请求
不影响当前正在进行操作
,且请求回来的数据分多次按顺序返回
3-2-1、代码块异步请求
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError));
3-2-2、代理方法异步请求
异步请求步骤:
3-2-2-1、构造连接对象(NSURLConnection)
+ (NSURLConnection *)connectionWithRequest: (NSURLRequest *)request delegate:(id)delegate
-
(id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate
-
(id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate startImmediately:(BOOL)startImmediately
3-2-2-2、发送请求
-
(void)start
-
(void)cancel
3-2-2-3、使用委托监控数据返回过程
3-2-2-3-1、请求开始
-
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
3-2-2-3-2、请求接收数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
3-2-2-3-3、请求完成
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
3-2-2-3-4、请求失败
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
3-2-2-4、将多次返回的数据连接成同一个数据对象
3-2-2-5、使用连接后的数据对象
4、数据信息处理
4-1、返回数据的处理
返回数据封装以NSData
一般将其转换为NSString后,才进行处理
NSString类中常用的转换方法:
-
(id)initWithData:(NSData *)data encoding: (NSStringEncoding)encoding
4-2、响应信息的处理
4-2-1、NSURLResponse
NSURLRequest对应的响应的元信息封装在NSURLResponse中
-
(long long)expectedContentLength
-
(NSString *)suggestedFilename
-
(NSString *)MIMEType
-
(NSString *)textEncodingName
-
(NSURL *)URL
4-3、错误信息的处理
NSError错误的处理
如果请求过程中发生错误,导致请求无法完成,则
error对象不为nil
-
(NSString *)localizedDescription
5、支持协议:
5-1、文件传输协议(ftp://)
5-2、超文本传输协议(http://)
5-3、安全128-bit超文本传输协议(https://)
5-4、本地文件路径(file:///)
相关文章推荐
- iOS网络请求总结、GET、POST、同步、异步代码块、异步代理、第三方AFNetWorking2.0使用
- IOS 使用block完成网络请求的自定义类BlockURLConnection
- IOS开发-网络请求方式总结
- iOS中使用block进行网络请求回调 - xuym
- 【iOS开发-网络】使用NSURLSessionDataTask发送get和post请求
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking
- IOS中网络数据请求过程详解(GET POST方法使用)
- iOS中使用block进行网络请求回调 - xuym
- iOS 网络请求框架AFNetworking使用方法(欢迎提建议和分享遇到的问题)
- 【iOS-网络】使用异步的post请求
- 对iOS网络请求的容易封装,并且使用block回调函数方式
- iOS音频的后台播放总结(后台网络请求歌曲,Remote控制,锁屏封面,各种打断)
- iOS网络请求第三方框架:MKNetworkKit介绍及简单使用
- iOS网络请求总结
- 对iOS网络请求的简单封装,并且使用block回调函数方式
- 使用burpsuite监控设备(如ios,android)网络http,https请求
- iOS中网络请求的使用(GET请求与POST请求)
- iOS中使用block进行网络请求回调
- iOS音频的后台播放总结(后台网络请求歌曲,Remote控制,锁屏封面,各种打断)
- iOS基础网络教程-Swift版本: 2.使用UIWebView请求数据