• 0
Вольдемар

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

Вопрос

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

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

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

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


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

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

  • 0

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

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

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

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

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

Вольдемар, Andrey Efimov, Anatoliy и 1 другому понравилось это

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


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

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

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


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

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

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

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


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

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

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

Anatoliy понравилось это

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


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

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

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

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


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

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

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

Изменено пользователем Дмитрий Потапов
Равиль Зарипов (ZuBy) и Andrey Efimov понравилось это

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


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

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

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

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

 

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

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


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу