• 0
Вольдемар

Что лучше: TIdHttp или TNetHTTPClient?

Вопросы

Подскажите, что лучше использовать: TIdHttp или TNetHTTPClient?

Запрос при Get одинаковый, но TNetHTTPClient возвращает корректный ответ от сервера, а TIdHttp  - 400-ю ошибку.

В то же время есть ощущение, что TIdHttp работает быстрее, чем TNetHTTPClient.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0

Раньше использовал TIdHttp, затем перешёл на THttpClient.

THttpClient и TNetHttpClient - по сути одно и то же, только последний является визуальным компонентом.

Поэтому в вашем случае корректнее сравнивать THttpClient и TIdHttp.

Конкретно для моих целей использование THttpClient предпочтительнее, поскольку он из коробки работает с https на всех платформах, а в случае TIdHttp для этого ещё нужно подключать ssl.

Разницы в скорости работы не замечал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если правильно помню THttpClient работает асинхронно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, FREEFAR сказал:

Если правильно помню THttpClient работает асинхронно

К тому же он нативный для каждой платформы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 часов назад, FREEFAR сказал:

Если правильно помню THttpClient работает асинхронно

синхронно и асинхронно, смотря как настроить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, Равиль Зарипов (ZuBy) сказал:

синхронно и асинхронно, смотря как настроить

А как настраивать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
16 минут назад, GASCHE сказал:

А как настраивать?

У компонента TNetHttpClient насколько я помню есть свойство Asynchronous, если выставить значение в true, то работа компонента станет асинхронной, а вот про THttpClient такого сказать не могу (по крайней мере я не понял как там можно настроить его на асинхронную работу), но проблему асинхронности с компонентом THttpClient можно  решить с помощью потоков.

Изменено пользователем Дмитрий Потапов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если не изменяет память, то:

Компонент TNetHttpClient это просто обёртка над THttpClient. В этой обёртке и реализована асинхронность, посредством создания отдельного потока. Если по каким-то причинам не хочется использовать TNetHttpClient с асинхронным режимом, то берёте THttpClient и запихиваете в отдельный поток.

На 100% точность не претендую, но когда стоял вопрос, что использовать в одном из приложений, выбор был сделан в пользу TNetHttpClient, т.к. уже всё, что нужно написали за нас :) (только использовать студию не ниже Berlin, т.к. в Seattle были какие-то проблемы с асинхронностью)

 

p.s. Если приложение для мобильных устройств - то юзайте TNetHttpClient (THttpClient). С indy компонентами на моб. устройствах проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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