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

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Ofline
Всем привет.
Вообщем пытаюсь синхронизировать свою локальную базу с сервером, использую при этом 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;
 
Назад
Сверху Снизу