Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Delphi [Restrequest] Как сделать запрос в потоке?

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,398
Баллы
155
Всем привет.
Вообщем пытаюсь синхронизировать свою локальную базу с сервером, использую при этом Restrequest,все идет нормально но только приложение зависает на время цикла.
В цикле идет перебор все данных в локальной базе и заносится по ссылке в базу.
Пытался сделать в потоке но выскакивает ошибка "Argument errore", а без потока не выскакивает.
Есть решение для улучшения скорости или хотя бы убрать зависания приложения?
спасибо за ранее за вашу помощь.
Код:
var
  aggiornarichiesta: TJSONObject;
  i,b: Integer;
  a:TStream;
begin

  FDTable1.First;
  for i := 0 to FDTable1.RecordCount do
  begin
    if RESTRequest1.Response.StatusCode = 200 then
    begin

        try
         RESTRequest1.ClearBody;
          RESTClient1.BaseURL := 'http://localhost/loman/dati.php';
         RESTRequest1.Execute;



          aggiornarichiesta := TJSONObject.Create;
          aggiornarichiesta.AddPair('id', FDTable1ID.Text);
          aggiornarichiesta.AddPair('Materiale',
            FDTable1.FieldByName('Materiale').AsString);
          aggiornarichiesta.AddPair('Descripzione',
            FDTable1.FieldByName('Descripzione').AsString);
          aggiornarichiesta.AddPair('Quantita', FDTable1.FieldByName('Quantita')
            .AsString);
          aggiornarichiesta.AddPair('Treno', FDTable1.FieldByName('Treno')
            .AsString);
          aggiornarichiesta.AddPair('Discorta', FDTable1.FieldByName('Discorta')
            .AsString);
          aggiornarichiesta.AddPair('Commento', FDTable1.FieldByName('Commento')
            .AsString);
          aggiornarichiesta.AddPair('Creatoda', FDTable1.FieldByName('Creatoda')
            .AsString);
          aggiornarichiesta.AddPair('Ordinato', FDTable1.FieldByName('Ordinato')
            .AsString);

          RESTClient1.BaseURL := 'http://localhost/loman/Product/update.php';
          RESTRequest1.ClearBody;
          RESTRequest1.AddBody(aggiornarichiesta.ToString,
            ContentTypeFromString('application/json'));
          RESTRequest1.Execute;
          FDTable1.Next;
          RESTRequest1.ClearBody;
          RESTClient1.BaseURL := 'http://localhost/loman/dati.php';
          RESTRequest1.Execute;
        finally
          RESTRequest1.DisposeOf;
        end;



    end;

  end;
 
Вверх