Перейти к содержанию
Fire Monkey от А до Я
  • 0

ENetHTTPClientException


Вольдемар

Вопрос

Приветствую всех!

Когда использую TNetHTTPClient в синхронном режиме и вызываю Post, то всё работает как надо и без ошибок. Когда включаю Asynchronous, то после аналогичных действий получаю:

Project raised exception class ENetHTTPClientException with message 'Error sending data: (12017) Операция отменена'.

Как лечится? Спасибо

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вот код

Function SampleSendFile(Const Url, FileName: String): String;
var
  lHttp: TNetHTTPClient;
  lSendData: TMultipartFormData;
  lResponse: IHTTPResponse;
Begin
  lHttp := TNetHTTPClient.Create(nil);
  lSendData := TMultipartFormData.Create;
  try
    lHttp.Asynchronous := True;
    lSendData.AddFile('FileField', FileName);

    if not lHttp.Asynchronous then
    begin
      lResponse := lHttp.Post(Url, lSendData);
      Result := lResponse.ContentAsString;
    end
    else
    begin
      lHttp.Post(Url, lSendData);
      Result := '';
    end;
    // Result := lResponse.StatusCode = 200;
  finally
    lSendData.Free;
    lHttp.Free;
  end;
end;

 

Ссылка на комментарий
  • 0

Мне кажется вся проблема в том, что идет удаление объекты до окончания операций. Учитывайте, что процесс выполняется асинхронно:

    begin
      //тут лишь создается поток, в котором выполняется запрос
      lHttp.Post(Url, lSendData);
      Result := '';
    end;
    // Result := lResponse.StatusCode = 200;
  finally
    //вот здесь ошибка. Нельзя удалять объекты, если действие еще не завершилось. Вы можете узнать об завершении прцоессса в событии OnRequestCompleted
    lSendData.Free;
    lHttp.Free;
  end;

 

 

Ссылка на комментарий
  • 0
7 часов назад, Fedor K сказал:

Мне кажется вся проблема в том, что идет удаление объекты до окончания операций. Учитывайте, что процесс выполняется асинхронно:

 

 

 

Спасибо, а как тогда удалять lSendData, чтобы память не расходовать?

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...