ios同步:
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
get方法同步:
1.设置Request
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15];
2.建立连接:
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
post方法同步:
1.设置 Request
NSMutableURLRequest* nsmRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15];
[nsmRequest setHTTPMethod:@"POST"];
NSString* string = @"type=focus-c";
NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];
[nsmRequest setHTTPBody:data];
NSURLResponse* response = nil;
2.建立连接:
NSData* data1 = [NSURLConnection sendSynchronousRequest:nsmRequest returningResponse:&response error:nil];
IOS异步:
1.get方法异步:
1.建立URL
URL* url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"] ;
2。生成request:
NSURLRequest* nsmRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15];
3.建立连接:
[[NSURLConnection alloc]initWithRequest:nsmRequest delegate:self];
4.(注意)需要遵守<NSURLConnectionDataDelegate>协议实现
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;//当连接报错时调用
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;//
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response//
- (void)connectionDidFinishLoading:(NSURLConnection *)connection//
2.POST 异步:
1.建立URL:
NSURL* url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];
2.生成request;
NSMutableURLRequest* nsmRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15];
[nsmRequest setHTTPMethod:@"POST"];
NSString* string = @"type=focus-c";
NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];
[nsmRequest setHTTPBody:data];
3.建立连接:
[[NSURLConnection alloc]initWithRequest:nsmRequest delegate:self];
4.(注意)需要遵守<NSURLConnectionDataDelegate>协议实现
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;//当连接报错时调用
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;//
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response//
- (void)connectionDidFinishLoading:(NSURLConnection *)connection//
缓存机制:
enum
{
NSURLRequestUseProtocolCachePolicy = 0,//默认
NSURLRequestReloadIgnoringLocalCacheData = 1,//忽略缓存直接从原始地址下载
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
NSURLRequestReturnCacheDataElseLoad = 2,
NSURLRequestReturnCacheDataDontLoad = 3,
NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
typedef NSUInteger NSURLRequestCachePolicy;
NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址 下载)
NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作) www.2cto.com
NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)