iOS 中客户端和服务器的 Web Service 网络通信 (2)

       在实际的应用开发过程中,同步请求的用户体验并不是很好;我们都知道,Apple是很重视用户体验的,这一点也成为了行业的标杆,没有用户哪里来的好产品,所以用户体验是极其重要的。大笑貌似废话有点多,接下来进入正题。同步请求不好,那么就使用异步请求的方法。在开发中,异步请求会使用 NSURLConnetction 类的委托协议 NSURLConnectionDelegate。在请求不同阶段会回调委托对象方法,具体方法如下:

     connection:didReceiveData: 当请求成功时,这个方法就会开始接收数据,如果数据量很多,它会被多次调用; connection:didFailWithError: 从方法中我们也可以大体知道这个方法的作用,没错,就是用来处理当加载数据出现异常的时候调用的; connectionDidFinishLoading: 从方法的命名中也可以知道这个方法是用来当成功完成加载数据时调用的,但在 connection:didReceiveData: 方法之后执行。

     PS:记得在.h头文件中的 @interface 接口中加入委托的申明<NSURLConnectionDelegate> 哦!

     加下来是具体实现的代码:


<span style="font-size:32px;"> * 开始请求Web Service
 */
-(void)startRequest
{    
    
    NSString *strURL = [[NSString alloc] initWithFormat:
                        @"请求服务器地址"];
    
	NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];
    
	NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
	
	NSURLConnection *connection = [[NSURLConnection alloc]
                                   initWithRequest:request
                                   delegate:self];
    
    if (connection) {
        self.datas = [NSMutableData new];
    }
    
}


#pragma mark- NSURLConnection method
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [self.datas appendData:data];   //利用NSMutalbeArray数组datas不断接收服务器端返回的数据
}


-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {
    
    NSLog(@"%@",[error localizedDescription]);
}
//当connection:didReceiveData:方法成功接收数据后回调这个方法
- (void) connectionDidFinishLoading: (NSURLConnection*) connection {
    NSLog(@"请求完成...");
    NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas options:NSJSONReadingAllowFragments error:nil];
    [self reloadView:dict];    //从服务端接收完整数据后,再把数据发送回表示层的视图控制器
}</span>

    



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值