xcode 中异步调用 WebService 获得大数据量的处理方式

  1. 调用 webserivce的方法

            //异步请求
            NSURLConnection *theConnection = [[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self] autorelease];
            if (theConnection) {   
                // Create the NSMutableData that will hold 
                // the received data 
                // receivedData is declared as a method instance elsewhere 
                self.receivedData=[[NSMutableData data] retain];   
            } else {   
                
            }   
    



    其中 receivedData 是定义在 .h 文件中的 NSMutalbeData 类型

  2. 要实现4个方法 ,分别在 调用时候,发生错误,获得数据,调用完成的时候触发
    //如果调用有错误,则出现此信息
    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        DLog(@"ERROR with theConenction:%@",error );
     
    }
    
    //开始调用请求
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        // store data
        DLog(@"didReceiveResponse");
        [self.receivedData setLength:0  ];            //通常在这里先清空接受数据的缓存
    }
    
    //调用成功(大数据量的时候可能会多次调用),获得soap信息
    -(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *)responseData
    {
        DLog(@"(在大数据量的时候,可能是一部分)获取的返回responseData 是:%@",[[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease]);
        [self.receivedData appendData:responseData];    
    }
    
    - (void) connectionDidFinishLoading:(NSURLConnection *) connection
    {
        DLog(@"%d",[self.receivedData length]);
        NSString * wsReturnValueString = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
        DLog(@"webserivce 调用结束,收取到的 全部报文是:%@",wsReturnValueString );
        DLog(@"WebService数据接受完成");
    }
    


你可能感兴趣的:(webservice,xcode,SOAP,encoding)