您的位置:首页 > 理论基础 > 计算机网络

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:///)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: