ios url的网络编程

http://wenku.baidu.com/view/b99a07d8ce2f0066f533229d.html

前言:理论上讲iPhone可以访问任何协议的端口,我们这里只讲述基于URL的网络编程。

一、支持的协议

文件传输协议(ftp://)、超文本传输协议(http://)、超文本传输协议(https://)、本地文件路径(file:///)。

 

二、访问url内容的步骤

1、构造NSURL

2、生成一个NSURLRequest

3、通过NSURLConnection发送请求

4、通过返回的NSURLResponse和NSError分析结果

下面,将详细介绍每一步:

1、NSURL

2、NSURLRequest

     2.1 封装了一个针对某个URL的请求信息

     构造方法:

+ (id)requestWithURL:(NSURL *)URL;

+ (id)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;

- (id)initWithURL:(NSURL *)URL;

- (id)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;

     2.2 可以指明内容的缓存策略

enum
{
    NSURLRequestUseProtocolCachePolicy = 0,

    NSURLRequestReloadIgnoringLocalCacheData = 1,
    NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
    NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,

    NSURLRequestReturnCacheDataElseLoad = 2,
    NSURLRequestReturnCacheDataDontLoad = 3,

    NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
typedef NSUInteger NSURLRequestCachePolicy;

       2.3 如果需要在初始化后仍能对url请求进行修改,可使用NSMutableURLRequest,可以修改的项目包括:缓存策略、超时时间、URL对象、主文档地址、头信息、上行内容、请求方法、Cookie

 

3、NSURLConnection 

可以使用同步或异步的方式发送一个请求,两者的结果返回内容不同。

3.1 同步请求

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;

     是最快捷的方式,但是不能监控内容下载过程。

     返回数据的处理:返回数据封装以NSData,一般将其转换为NSString后,才进行处理。

     响应的处理:NSURLRequest对应的响应的元信息封装在NSURLResponse中。

     NSURLResponse:它包含关于一个URL load的元数据。注意:NSURLResponse对象并不包含实际的url内容。如果想获得一个URL load接收到的数据的更详细的信息,请看NSURLConnection and NSURLConnectionDelegate。

- (id)initWithURL:(NSURL *)URL MIMEType:(NSString *)MIMEType expectedContentLength:(NSInteger)length textEncodingName:(NSString *)name;
- (NSURL *)URL;//返回receiver的url
- (NSString *)MIMEType;//返回receiver的MIMEType
- (long long)expectedContentLength;
- (NSString *)textEncodingName;
- (NSString *)textEncodingName;

     错误的处理:如果请求过程中发生错误,导致请求无法完成,则error对象不为nil。

     NSError:包含许多方法可以描述错误信息,常用的有- (NSString *)localizedDescription;

 

3.2 异步请求

    不影响当前正在进行的操作,数据分多次按顺序返回

    异步请求步骤:

  1、构造NSURL

  2、生成一个NSURLRequest

  3、构造连接对象(NSURLConnection)

  4、发送请求

  5、使用委托监控数据返回过程

  6、将多次返回的数据连接成同一个数据对象

  7、使用连接后的数据对象

构造连接:

- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately NS_AVAILABLE(10_5, 2_0);
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate;
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;

发送请求:

- (void)start NS_AVAILABLE(10_5, 2_0);
- (void)cancel;

使用委托:

NSURLConnectionDelegate、NSURLConnectionDataDelegate、NSURLConnectionDownloadDelegate

 [提醒自己:好好看一下NSURLConnection这个类!]

 

 三、总结

•可以使用NSURL构造一个URL

•可以使用NSURLRequest构造一个请求

•可以使用NSURLConnection发送一个请求,并返回数据

•可以使用NSURLResponse和NSError来监测响应和错误信息

posted @ 2013-08-20 21:35  little_star  阅读(615)  评论(0编辑  收藏  举报