【发布时间】:2011-09-10 21:59:33
【问题描述】:
我如何知道我的 ASIHttpFormDataRequest 何时结束? 实际上我正在连续做两个。第一个是发送消息,另一个是从数据库中检索所有消息。
或者有时我的第一条消息还没有发送,而我的第二个请求只是给我未上传的消息列表。
我想在第一个结束时延迟第二个。 谢谢!
有什么想法吗?
谢谢你:)
【问题讨论】:
标签: ios xcode notifications asihttprequest
我如何知道我的 ASIHttpFormDataRequest 何时结束? 实际上我正在连续做两个。第一个是发送消息,另一个是从数据库中检索所有消息。
或者有时我的第一条消息还没有发送,而我的第二个请求只是给我未上传的消息列表。
我想在第一个结束时延迟第二个。 谢谢!
有什么想法吗?
谢谢你:)
【问题讨论】:
标签: ios xcode notifications asihttprequest
异步使用请求是一个好习惯。
要确定一个请求是否已经完成,您可以通过简单地使您的类符合[ASIHTTPRequestDelegate][1] 来做到这一点。
它为您提供了一系列方法来实现成功、失败或重定向的请求。
在给定的情况下,您正在寻找
- (void)requestFinished:(ASIHTTPRequest *)request;
您必须将请求的委托设置为当前调用类。
根据您当前请求的结果,您可能会触发另一个请求。您可以在其中放置一个if-statement 以检查 URL 和响应代码并相应地触发您的下一个请求。 (还有很多其他方法可以确定何时可以调用下一个请求。但最简单的方法是监听第一个请求的结果。)
这是来自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
【讨论】: