Уведомление ASIHttpFormDataRequest о завершении - PullRequest
0 голосов
/ 11 сентября 2011

Как я могу узнать, когда мой ASIHttpFormDataRequest заканчивается? На самом деле я делаю два из них подряд. Первый состоит в отправке сообщения, а второй - в получении всех сообщений из базы данных.

Или иногда случается, что мое первое сообщение еще не было отправлено, а мой второй запрос просто выдает мне невыгруженный список сообщений.

Я хотел бы отложить второй в конце первого. Спасибо!

Есть идеи?

Спасибо:)

1 Ответ

0 голосов
/ 11 сентября 2011

Хорошей практикой является использование запросов асинхронно.

Чтобы узнать, завершился или нет запрос, вы можете сделать это, просто согласовав свой класс с [ASIHTTPRequestDelegate][1].Он предоставляет вам множество методов для реализации для успешного, неудачного или перенаправленного запроса.

В данном случае вы ищете - (void)requestFinished:(ASIHTTPRequest *)request; Вам нужно будет установить делегат запроса на текущийкласс вызова.

В зависимости от результата вашего текущего запроса, вы можете запустить другой запрос.Вы можете указать if-statement, чтобы проверить URL-адрес и код ответа, и, соответственно, запустить свой следующий запрос.(Есть много других способов определить, когда можно вызвать следующий запрос. Но проще всего было бы прослушать результат первого запроса.)

Вот немного кода из проектов ASIHTTPRequestДокументация :

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

HTH

...