2012-06-01 70 views
1

我的要求是ASIHTTPRequest Get請求 - 代表沒有得到調用

 NSURL *requestUrl = [NSURL URLWithString:url]; 

    if(request_) { 
     [request_ setDelegate:nil]; 
     [request_ release]; 
    } 
    request_ = [[ASIFormDataRequest requestWithURL:requestUrl] retain]; 
    [request_ setDelegate:self]; 
    [request_ setRequestMethod:@"GET"]; 
    [request_ setTimeOutSeconds:HTTP_TIME_OUT]; 
    [request_ startAsynchronous]; 

自頂欄上的網絡訪問指示燈通話會旋轉,幾秒鐘後消失。但無論哪種的委託方法

- (void)requestFinished:(ASIHTTPRequest *)request 

- (void)requestFailed:(ASIHTTPRequest *)request

不會被調用。出了什麼問題?

在此先感謝。

PS:有時,由於某些問題,服務器正在返回一個「500內部服務器錯誤」。但是,即使在這種情況下,不應該委託

- (void)requestFailed:(ASIHTTPRequest *)request

叫?

+0

使用NSLog打印一些值。你有沒有實現類中的方法?當你將委託分配給自己時,應該在同一個類中定義方法。 –

+0

我已經實現了它們。這就是我能夠知道那些沒有被稱爲.. :) :) – DroidHeaven

回答

4

你可以使用塊來檢查。

這裏是相同的例子:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 
    __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setCompletionBlock:^{ 
     // Use when fetching text data 
     NSString *responseString = [request responseString]; 

     // Use when fetching binary data 
     NSData *responseData = [request responseData]; 
    }]; 
    [request setFailedBlock:^{ 
     NSError *error = [request error]; 
    }]; 
    [request startAsynchronous]; 

我希望這可以幫助。

+0

謝謝老兄,那一個間接幫助我找出什麼是問題。在我的代碼的其他部分代表nil – DroidHeaven

+0

我有同樣的問題,但切換到塊,而不是實現ASIHTTPRequestDelegate和使用委託方法,幫助我。我仍然不知道爲什麼,我有一箇舊版本的EXACT相同的代碼與代表一起工作的應用程序.. –

1

確保您的課程符合ASIHTTPRequestDelegate協議。

@interface YourClass : ... <ASIHTTPRequestDelegate> 
+0

是的,它是.. ..仍然不打電話:( – DroidHeaven