我怎么知道我的ASIHttpFormDataRequest何时结束? 实际上我连续做了两个。第一个是发送消息,而另一个是从数据库中检索所有消息。
或者有时我的第一条消息尚未发送,而我的第二条请求只是给我一个未上载的消息列表。
我想在第一个结束时推迟第二个。 谢谢!
有什么想法吗?
谢谢:)
答案 0 :(得分:0)
最好以异步方式使用请求。
要确定请求是否已完成,您只需将您的班级与[ASIHTTPRequestDelegate][1]
相符即可。
它为您提供了一系列实现成功,失败或重定向请求的方法。
在给定的情况下,你正在寻找
- (void)requestFinished:(ASIHTTPRequest *)request;
您必须将请求的委托设置为当前的调用类。
根据您当前请求的结果,您可以触发另一个请求。您可以在其中放置if-statement
以检查网址和响应代码,并相应地触发您的下一个请求。 (还有很多其他方法可以确定何时可以调用下一个请求。但最简单的方法是收听第一个请求的结果。)
以下是ASIHTTPRequest Projects Documentation的一些代码:
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
HTH