2011-01-11 83 views
0

我尝试使用以下代码异步连接到HTTPS站点。
绝对没有发生。 setRequestDidFinishSelector或setRequestDidFailSelector永远不会被调用...
- 我试图通过将请求设置为同步来测试它,并且它可以工作。
- 我也尝试按照ASIHTTPRequest文档尝试使用__block,它也可以。使用ASIFormDataRequest失败异步请求

任何人都可以请帮忙吗?

Thx!

- (NSArray*) requestAccessForUser: (NSString*) user 
    withPassword:(NSString*) password 
    { 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:authPageURL]; 
    [request setPostValue:user forKey:@"user"]; 
    [request setPostValue:password forKey:@"pwd"]; 
    [request setRequestMethod:@"POST"]; 
    [request setDelegate:self]; 
    [request setRequestDidFailSelector:@selector(requestFailed:)]; 
    [request setRequestDidFinishSelector:@selector(requestFinished:)]; 
    [request setTimeOutSeconds:30]; 

    //[request startSynchronous]; // <= This works 
    [request startAsynchronous]; // <= This crashes 

} 

- (void)requestFinished:(ASIHTTPRequest *)request{ 
    NSLog(@"requestFinished: %@", [request responseString]); 
} 

- (void)requestFailed:(ASIHTTPRequest *)request{ 
    NSError *error = [request error]; 
    NSLog(@"oops: %@", [error localizedDescription]); 
} 

回答

0

在您的代码中,您正在设置选择器setQueueDidFinishSelector而不是setRequestDidFinishSelector。事实上,如果你的类符合ASIHTTPRequestDelegate协议,你不需要设置这些选择器,它们将被默认调用。

+0

哎呀,这是一个错字...抱歉!在我的代码中setQueueDidFinishSelector确实是setRequestDidFinishSelector。崩溃仍然发生:(尽管现在我结束了使用内联__block并委托完成状态或失败状态。我希望我知道为什么这个异步崩溃虽然... – 2011-01-11 22:22:32