Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Странное поведение Indy (TIdHttp) / 25 сообщений из 26, страница 1 из 2
13.09.2021, 10:53
    #40097086
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Добрый день!

Есть десктопное приложение, которое обращается к файловому сервису через компонент TIdHttp и с помощью метода POST получает ответ в формате JSON.
JSON-параметр "file_data" содержит тело файла в кодировке BASE64.

В компании создали клон проекта, настроили отдельные сервера (в облаке).

СУТЬ ПРОБЛЕМЫ
При обращении к базовому сервису - все работает отлично.
При обращении к клону через TChromium.Browser.MainFrame.LoadRequest (компоненты CEF4) - срабатывает от 1 до 3 миллисекунд.
При обращении к клону через TIdHttp - наблюдается задержка получения ответа (до 15 секунд для файла размером 495 КБ)!

TIdHttp пробовал использовать как из кода, так и на форму бросал.
Эффект одинаково плохой. Никаких спец.настроек для компонента не произвожу.

Понимаю, что проблема вероятнее всего в окружении,
но админы крест на пузе рисуют и говорят, что единственное отличие это то,
что старые сервера распределенные (физически разные), а новые в одном дата-центре и одном облаке.

Знающие люди, подскажите пожалуйста, может быть есть какая-то настройка в самом Indy?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
procedure TMainForm.DwnlWithIndy;
var vURL : string;
  vDataId : TIdMultiPartFormDataStream;
  vResponse : string;
  vJSON: TJSONObject;
  vSS : TStringStream;
  vIdHttp : TIdHTTP;
begin
  vIdHttp := TIdHTTP.Create(Self);
  try
    // Параметры запроса;
    vDataId := TIdMultiPartFormDataStream.Create;
    vDataId.AddFormField('path', ePathSrv.Text).ContentTransfer := '8bit';
    vDataId.AddFormField('compression_mode', 'BASE64');
    vDataId.AddFormField('response_type', 'JSON');

    // URL для отправки запроса;
    vURL := cbbHost.Text + '?show_file';

    memoRequest.Clear;
    memoRequest.Lines.Add(DateTimeToStr(Now)+#13#10+'Request params added!');

    // Отправка POST запроса;
    memoResponse.Clear;
    memoResponse.Lines.Add('Download START: '+#09+DateTimeToStr(Now));
    vResponse := vIdHttp.Post(vURL, vDataId);
    memoResponse.Lines.Add('Download END: '+#09+DateTimeToStr(Now));

    // Сохранение результата выполнения запроса;
    vSS := TStringStream.Create(vResponse);
    try
      vSS.SaveToFile('response.json');

      // Сохранение файла на ПК;
      vJSON := TJSONObject.ParseJSONValue(vResponse, False, True) as TJSONObject;
      vSS := TStringStream.Create(vJSON.Values['file_data'].Value);
      vSS.SaveToFile('vid.mp4');
    finally
      FreeAndNil(vSS);
    end;
  finally
    FreeAndNil(vIdHttp);
  end;
end;
...
Рейтинг: 0 / 0
13.09.2021, 10:53
    #40097087
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
...
Рейтинг: 0 / 0
13.09.2021, 10:53
    #40097088
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
...
Рейтинг: 0 / 0
13.09.2021, 10:57
    #40097090
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
KinsT_UA
но админы крест на пузе рисуют и говорят, что единственное отличие это то,
что старые сервера распределенные (физически разные), а новые в одном дата-центре и одном облаке.

Хромом проверяешь и отдаешь результат админам. Пусть работу работают, а не кресты рисуют.
...
Рейтинг: 0 / 0
13.09.2021, 11:11
    #40097095
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
wadman
KinsT_UA
но админы крест на пузе рисуют и говорят, что единственное отличие это то,
что старые сервера распределенные (физически разные), а новые в одном дата-центре и одном облаке.

Хромом проверяешь и отдаешь результат админам. Пусть работу работают, а не кресты рисуют.


В том-то и дело, что из браузера Хром на новом сервере, срабатывает моментально.
Конкретно Инди странно работает :(
Может быть какой-то либы не хватает?
...
Рейтинг: 0 / 0
13.09.2021, 11:13
    #40097097
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
KinsT_UA
wadman
пропущено...

Хромом проверяешь и отдаешь результат админам. Пусть работу работают, а не кресты рисуют.


В том-то и дело, что из браузера Хром на новом сервере, срабатывает моментально.
Конкретно Инди странно работает :(
Может быть какой-то либы не хватает?

Инди она такая... Порой дико глючная, но в целом, да - странная, вне зависимости от версии :)
Лучше уже что то другое выберите. Из бесплатного еще ICS и SYNAPSE есть.
...
Рейтинг: 0 / 0
13.09.2021, 11:37
    #40097114
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Весьма хорош TNetHttpClient, который из коробки
...
Рейтинг: 0 / 0
13.09.2021, 11:39
    #40097117
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
asutp2,

+1

TIdHttp - не нужен.
...
Рейтинг: 0 / 0
13.09.2021, 12:33
    #40097145
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
asutp2
Весьма хорош TNetHttpClient, который из коробки

Кстати, да: https://webdelphi.ru/2019/02/http-client-api-v-delphi/
...
Рейтинг: 0 / 0
13.09.2021, 14:08
    #40097206
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Возможно, сервер не отдает content-length, но на старом сервере рвет коннект, а на новом keep-alive. Вот клиент и ждет у моря погоды. Сравни полный дамп сеансов.
Еще для исключения влияния протокола можно попробовать отправлять запрос через голый сокет.
...
Рейтинг: 0 / 0
13.09.2021, 14:27
    #40097213
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Запротоколируйте обмен между Indy и старым сервером и новым сервером. Найдите, в чём разница.
Может редирект какой-нибудь появился.
...
Рейтинг: 0 / 0
14.09.2021, 09:46
    #40097473
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Доброе утро!

Огромное спасибо всем, кто поучаствовал!

Как писали asutp2, rgreat и Softologic , попробовали TNetHttpClient - работает отлично!
На всякий случай скачал и другие компоненты )

Fr0sT-BrutalВозможно, сервер не отдает content-length, но на старом сервере рвет коннект, а на новом keep-alive. Вот клиент и ждет у моря погоды. Сравни полный дамп сеансов. Чем можно такой дамп отследить? Дайте что-нибудь на почитать об этом, пожалуйста!

DmSerЗапротоколируйте обмен между Indy и старым сервером и новым сервером.Тот же вопрос: чем/как это осуществить?
Мы ставили снифер и пытались пакеты смотреть, по итогу: "очень интересно, но ничего не понял" (ц) :)

DmSerМожет редирект какой-нибудь появился. Доп. редиректов нет. Смотрели через tracert . На новом серваке даже меньше переходов, чем на старом Оо
...
Рейтинг: 0 / 0
14.09.2021, 10:18
    #40097487
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
KinsT_UA
Чем можно такой дамп отследить?
Wireshark
KinsT_UA
очень интересно, но ничего не понял
Так смотрите HTTP-заголовки
...
Рейтинг: 0 / 0
14.09.2021, 10:25
    #40097490
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Если соединение не через TLS, то SmSniff очень простой и понятный сниффер. Если TLS, то чуть сложнее - Wireshark с установкой их сертификата. Будет много инфы со всех сетевых уровней, но надо искать HTTP команды. Мануалов в сети много
...
Рейтинг: 0 / 0
14.09.2021, 11:10
    #40097508
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Fr0sT-Brutal
Wireshark с установкой их сертификата.
О! Он уже умеет https? Не знал.
...
Рейтинг: 0 / 0
14.09.2021, 12:12
    #40097525
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
_Vasilisk_
Fr0sT-Brutal
Wireshark с установкой их сертификата.
О! Он уже умеет https? Не знал.


Гениальная штука https!
Вроде всё шифрует, хрен влезешь.
Про при большом желании ставишь свой сертификат и все видно!
...
Рейтинг: 0 / 0
14.09.2021, 12:16
    #40097526
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
DmSer
Вроде всё шифрует, хрен влезешь.

В итоге ничего не шифрует. Это как налог на ТКО. Денег собрали, а смысла-то и нет.

Я на телефоне могу посмотреть трафик любого приложения. Будь то хоть банк, хоть еще какое-то "важное" приложение. Да и любой может. Афера мирового масштаба. :)
...
Рейтинг: 0 / 0
14.09.2021, 12:26
    #40097530
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
KinsT_UA


DmSerЗапротоколируйте обмен между Indy и старым сервером и новым сервером.


Тот же вопрос: чем/как это осуществить?
Мы ставили снифер и пытались пакеты смотреть, по итогу: "очень интересно, но ничего не понял" (ц) :)


В составе Indy есть компонент для логгирования (вроде TIdLog, но могу ошибаться).
Также есть Handler'ы, в которых можно ловить весь (или почти весь) обмен.

Ещё можно через Fiddler логгировать. В этом случае для IdHTTP нужно указать имя и порт прокси.
Но Fiddler собака сейчас стал платным.
...
Рейтинг: 0 / 0
14.09.2021, 15:32
    #40097585
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
_Vasilisk_
Fr0sT-Brutal
Wireshark с установкой их сертификата.
О! Он уже умеет https? Не знал.

Да, причем и портабельная версия тоже
DmSer
Гениальная штука https!
Вроде всё шифрует, хрен влезешь.
Про при большом желании ставишь свой сертификат и все видно!

wadman
В итоге ничего не шифрует. Это как налог на ТКО. Денег собрали, а смысла-то и нет.

Всё он шифрует. Но ведь странно как-то иметь непонятный трафик на своей машине и не мочь его посмотреть. И потом, если у клиента есть cert pinning, то хренушки что-то выйдет со сниффингом. Хотя, наверно, можно подменить домен через hosts или DNS, и сделать серт на это доменное имя. Тогда, если клиент не совсем уж паранойный и не проверяет цепочки сертов, может прокатить.

Также, если клиент особо не заморачивается с проверкой, можно сделать простейший TLS=>TLS ретранслятор, который бы писал весь трафик.
...
Рейтинг: 0 / 0
14.09.2021, 15:35
    #40097587
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Fr0sT-Brutal
И потом, если у клиента есть cert pinning, то хренушки что-то выйдет со сниффингом

Хочешь сказать, что банковские приложения создают люди, которые не в теме?
Иначе как я смотрю трафик их приложений на телефоне?
...
Рейтинг: 0 / 0
14.09.2021, 17:09
    #40097616
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
HTTP Analyzer v7 мне нравиться, а для остального WireShark
...
Рейтинг: 0 / 0
14.09.2021, 17:11
    #40097617
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
wadman
Хочешь сказать, что банковские приложения создают люди, которые не в теме?
Иначе как я смотрю трафик их приложений на телефоне?

Не боги горшки обжигают. Стряпать приложухи тяп-ляп и всех насильно на них пересаживать много ума не надо
...
Рейтинг: 0 / 0
17.09.2021, 11:37
    #40098260
KinsT_UA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Из интересного в продолжение темы :)

Когда попробовали через протокол HTTPS, то всё срабатывает за 1 секунду даже при базовой реализации через Indy.
...
Рейтинг: 0 / 0
17.09.2021, 13:59
    #40098308
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
То есть у вас до этого был простой открытый HTTP и ты до сих пор не сравнил дампы запросов?
...
Рейтинг: 0 / 0
18.09.2021, 00:56
    #40098410
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Indy (TIdHttp)
Fr0sT-Brutal,

Но виновато конечно же Indy
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Странное поведение Indy (TIdHttp) / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]