我正在使用ASIHTTPRequest向Web服务器发送请求。一切正常。但现在,当我调用grabURLInBackground
方法时,会向请求的URL发送请求。
但现在,我需要在viewWillDissapear
方法中取消请求(如停止发送,并停止从URL下载内容)。我怎样才能做到这一点 ?帮助
- (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];
}
答案 0 :(得分:3)
for (ASIHTTPRequest *req in ASIHTTPRequest.sharedQueue.operations)
{
[req cancel];
[req setDelegate:nil];
}
这应该取消..
答案 1 :(得分:2)
你可以这样做:
[request cancel]
或者:
[request clearDelegatesAndCancel];
从文档here中可以看出。
我建议存储对该请求的引用,以便您在离开视图时取消它。
答案 2 :(得分:2)
从ASIHttp docs开始:
取消异步请求
要取消异步请求(使用[request startAsynchronous]启动的请求或在您创建的队列中运行的请求),请调用[request cancel]。请注意,您无法取消同步请求。
请注意,当您取消请求时,请求会将其视为错误,并将调用您的委托和/或队列的失败委托方法。如果您不想要这种行为,请在调用cancel之前将委托设置为nil,或者使用clearDelegatesAndCancel方法。
//取消异步请求
[请求取消]
//取消异步请求,
首先清除所有代表和阻止 [request clearDelegatesAndCancel];当使用ASINetworkQueue时,除非队列的shouldCancelAllRequestsOnFailure为NO(YES是默认值),否则取消单个请求时将取消所有其他请求。
//当此队列中的请求失败或被取消时,其他请求将继续运行
[queue setShouldCancelAllRequestsOnFailure:NO];
//取消队列中的所有请求
[queue cancelAllOperations];