IOS网络请求简单笔记(一)

网络请求可简单的分为三步骤

1.确定请求地址 NSURL

2.确定NSURLRequest / NSMutableURLRequest(post 使用)

3.NSURLConnection

最后根据苹果的习惯,网络请求肯定是有代理的:

NSURLConnectionDataDelegate


代理方法:

//服务器开始返回数据
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    
    NSLog(@"didReceiveResponse");

}

//接收服务器返回的数据 //会被多次调用
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
     NSLog(@"didReceiveData");
     [self.data appendData:data];
}

//数据接收完毕
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{

    NSString *result =[[NSString alloc] initWithData:self.data encoding:NSUTF8StringEncoding];
     NSLog(@"result: %@",result);
    self.data = nil;
}

//连接错误
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

     NSLog(@"didFailWithError");
}

//发送数据给服务器 post方法请求使用
-(void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite{

     NSLog(@"didSendBodyData");

}


Get请求:


-(void)testGetRequest{

    NSString *strUrl = @"http://c.51wnl.com/api4.3.2/getstar.ashx?starname=aries";
    NSURL *url = [NSURL URLWithString:[strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData  timeoutInterval:5];
    
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [conn start];
}

Post 请求

-(void)testPostRequest{
 
    NSString *strUrl = @"http://c.51wnl.com/api4.3.2/getstar.ashx?";
    NSURL *url = [NSURL URLWithString:strUrl];
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5];
    [request setHTTPMethod:@"POST"];
    
    NSString *bodyStr = [NSString stringWithFormat:@"starname=%@",@"aries"];
    [request setHTTPBody:[bodyStr dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
    
    [conn start];

}


最后一个也记下:缓存策略

typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
    //默认的缓存策略,要在协议的实现方法中指定缓存逻辑
    NSURLRequestUseProtocolCachePolicy = 0,
    //忽略本地缓存
    NSURLRequestReloadIgnoringLocalCacheData = 1,
    //忽略本地和远程的缓存数据 直接从服务器请求数据
    NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
    //忽略缓存从原始地址下载
    NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
    //缓存有数据就从缓存中加载,否则从服务器中请求
    NSURLRequestReturnCacheDataElseLoad = 2,
    //只使用缓存数据
    NSURLRequestReturnCacheDataDontLoad = 3,
    //验证本地数据与远程数据是否相同 相同使用,否则重新加载数据
    NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值