ASIHTTPRequest请求取消

Rin*_*ain 4 iphone xcode objective-c asihttprequest

我一直在使用ASIHTTPRequest来获取数据,我想取消请求我是怎么做到的?我像这样做代码..

-(void) serachData{
   NSURL *url= [NSURL URLWithString:self.safestring];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setTimeOutSeconds:7200];
    [request setDelegate:self];
    [request startAsynchronous];
}

 - (NSMutableDictionary *)requestFinished:(ASIHTTPRequest *)request
 {
   NSLog(@"requestFinished");
    NSString *responseString = [request responseString];
    SBJsonParser *json = [[SBJsonParser alloc] init];
    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects[jsonobjectWithString:responseString], nil];
     NSLog(@"array %@",array);
  }

  - (void)requestFailed:(ASIHTTPRequest *)request{
 NSLog(@"requestFailed");
 }
Run Code Online (Sandbox Code Playgroud)

//如果我按下取消按钮(当进程中的requestFinished/requestFailed方法时)则ASIHTTPRequest失败并完成方法停止/中止!我怎么做的?

 -(IBAction)CancleREquest:(id)sender{
NSLog(@"CancleREquest");
   }
Run Code Online (Sandbox Code Playgroud)

Par*_*iya 9

您的取消特定ASIHTTPRequest然后:

if(![yourASIHTTPRequest isCancelled]) 
{
    // Cancels an asynchronous request
    [yourASIHTTPRequest cancel];
    // Cancels an asynchronous request, clearing all delegates and blocks first
    [yourASIHTTPRequest clearDelegatesAndCancel];
}
Run Code Online (Sandbox Code Playgroud)

注意:要取消所有 ASIHTTPRequest,请:

for (ASIHTTPRequest *request in ASIHTTPRequest.sharedQueue.operations)
{
  if(![request isCancelled]) 
  {
     [request cancel];
     [request setDelegate:nil];
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用AFNetworking,ASIHTTPRequest因为自2011年3月以来尚未更新.


dvd*_*sgn 6

好简单版:

for (ASIHTTPRequest *request in ASIHTTPRequest.sharedQueue.operations){
    [request cancel];
    [request setDelegate:nil];
}
Run Code Online (Sandbox Code Playgroud)