2010-01-09 2 views
0

Я использую ASIHTTPRequest для получения некоторых данных из веб-службы.Является ли ASIHTTPRequest не асинхронным?

Я делаю запросы, используя петлю.

Проблема в том, что запрос не выполняется асинхронно, поэтому мой указатель активности не работает.

Верно ли, что ASIHTTPRequest не является асинхронным.

или должен использовать обычный nsmutablerequest для выполнения асинхронного запроса.

ответ

2

Вы должны поместить ваш запрос в очереди загрузки, т.е.

ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url]; 
[request setDelegate:self]; 
[request setDidFinishSelector:@selector(requestDone:)]; 
[request setDidFailSelector:@selector(requestWentWrong:)]; 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[queue addOperation:request]; 
[request release];  

Просто

[request startAsynchronous]; 

запускает запрос в потоке пользовательского интерфейса, так что вы должны попробовать его с очереди загрузки.

+0

строка nsoperation дает ошибку, говоря, что метод sharedAppDelegate не будет отвечать на MyAppDelegate. и строка [request startAsynnchronous] также дает то же предупреждение. – harshalb

+0

yap, потому что это всего лишь пример .. подождать минуту –

+0

отредактировал ответ. [request startAsynchronous] не относится к первому фрагменту кода. –

0

Для синхронизации синхронного

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request startSynchronous]; 
    NSError *error = [request error]; 
    if (!error) { 
    NSString *response = [request responseString]; 
    } 

Создание асинхронного запроса

- (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]; 
} 

И есть много больше возможностей, таких как очереди и многое другое

Вы можете обратиться http://allseeing-i.com/ASIHTTPRequest/How-to-use