网页浏览总次数

2011年5月19日星期四

URLRequest详解

Fannic原创 (转载请注明出处 http://ylucy.cnblogs.com)
URLRequest的使用实例
// 设置url  NSURL * url = [NSURL URLWithString:@"http://www.stackoverflow.com"]; //设置Request //所构建的NSURLRequest具有一个依赖于缓存响应的特定策略,cachePolicy取得策略,timeoutInterval取得超时值 NSURLRequest * request = [NSURLRequest requestWithURL:url                 cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]; // 用这个request和delegate来创建连接   _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
 
其中:
NSURLRequest默认的cache policy是NSURLRequestUseProtocolCachePolicy, 是最能保持一致性的协议。
NSURLRequestReloadIgnoringCacheData 忽略缓存直接从原始地址下载
NSURLRequestReturnCacheDataElseLoad 只有在cache中不存在data时才从原始地址下载
NSURLRequestReturnCacheDataDontLoad 允许app确定是否要返回cache数据,如果使用这种协议当本地不存在response的时候,创建NSURLConnection or NSURLDownload实例时将会马上返回nil;这类似于离线模式,没有建立网络连接;
你只需要实现以下delegate方法来处理数据响应
- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSHTTPURLResponse*)response - (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data - (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error - (void)connectionDidFinishLoading:(NSURLConnection *)connection NSURLConnect还提供了一个方便的类方法(class method) : sendSynchronousRequest:returningResponse:error:可用来 同步地加载一个URL请求 + (NSData *)sendSynchronousRequest:    (NSURLRequest *)request      returningResponse:   (NSURLResponse **)response    error:  (NSError **)error
  • request 要装载的URL请求. 这个request 对象 作为初始化进程的一部分,被深度复制(deep-copied). 在这个方法返回之后, 再修改request, 将不会影响用在装载的过程中的request
  • reponse 输出参数, 由服务器返回的URL响应
  • error   输出参数, 如果在处理请求的过程中发生错误,就会使用.  无错误,就为NULL
小常识: URL loading system class 层次结构如下图所示:

没有评论:

发表评论