2011-01-11 124 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