我想显示从Web服务加载的数据,但Web服务需要很长时间,并且“数据”在加载之前显示。我怎么强迫它等?
感谢。
连接到网络服务
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:tmpURl];
[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue:@"http://tempuri.org/GetCategory" forHTTPHeaderField:@"SOAPAction"];
NSString *msgLength=[NSString stringWithFormat:@"%i",[soapMessage length]];
[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if(conn)
{
}
答案 0 :(得分:2)
默认情况下,NSURLConnection
类是异步的,没有什么特别需要做的。我可以从上面发布的代码中看到你正在设置NSURLConnection
的委托,你只需要实现委托所需的方法。
查看NSURLConnection
类引用,特别是“概述”部分,其中解释了委托方法。
在您的代码段中,在您开始连接之后,您可以显示带有微调器的UIAlertView,然后在数据到达时在委托方法中将其关闭。
答案 1 :(得分:1)
有两种方法可以实现,Web服务soap调用可以异步和同步调用,但我只建议使用异步方法,因为它更快,你将不必要地阻止iPhone UI线程,你可能会阻止用户界面,以便用户认为您的程序已崩溃。
最好的办法是在桌面上显示一些UI动画和一些MODAL窗口,以防止用户输入任何输入。