Странное поведение WebRequest в MT5 - через какое-то время выдает ошибку. - страница 4

 
Igor Ramensky #:

Так легко проверить)) Сон - спящий. Опять нет?

нет

и до тех пор нет, пока проблема не будет решена

проблема решится, значит будет найден верный ответ

я работаю через DLL, но я бы хотел обойтись MQL

поэтому тема весьма актуальна

причем интересует шифрованная авторизация и куки плюсом

;)

 
Renat Akhtyamov #:

это кому как повезло прочитать


в обоих случаях текущие сетевые соединения рвутся, а по просыпанию записи в кеше DNS в основном экспарены. То есть первый запрос WebRequest("somesite.com") вызовет запрос вовне "дайте IP somesite.com" а потом уже tcp://1123.
Пока адрес не отресолвится и не запомнится все запросы к somesite будут ждать, а потом выскочат пачкой

Не исключаю что по просыпанию у ТС получается несколько запросов кряду, например с разных вкладок. Или с одной вкладки, подряд (тики, или даже таймеры, накопились и подряд без пауз OnTick/OnTimer). Тут уже играет разница 32/64 и нутрь MT.
Может быть действительно изредка баг с таймерами - при выходе из сна таймер лишний раз щёлкнет. Но самому проверять нет смысла - ну не предназначен терминал для сна, а наоборот заточен под постоянную круглосуточную работу. 

Всё наложится и cmegroup (или cloudflare или подобное) может заблеклистить/отказать такой пачке запросов подряд. А yahoo нет, например потому что защита иначе построена. 

 
Renat Akhtyamov #:

нет

и до тех пор нет, пока проблема не будет решена

проблема решится, значит будет найден верный ответ

я работаю через DLL, но я бы хотел обойтись MQL

поэтому тема весьма актуальна

;)

Я раньше тоже использовал DLL для запросов. Но когда появился в МТ адекватно работающий WR, то перешел на него и не жалею пока. Единственная досада, что в МТ5 появился с полгода назад такой глюк. Но МТ4 работу выполняет. Да и МТ5 тоже, если его перезапускать после отработки нужной пачки запросов. А в пачке этих запросов много. Ну может тысяча. Может и больше. С котировками никак не связано. На СМЕ много интересного и без котировок.

 
Maxim Kuznetsov #:

Не исключаю что по просыпанию...

У меня нет проблем с выходом из спящего режима, тут это было указано через запятую, что и в этом случае тоже.

Поэтому, дружище, прошу больше не беспокоиться на "спящую" тему. Спасибо за содействие в решении вопроса.

 
Igor Ramensky #:

Я раньше тоже использовал DLL для запросов. Но когда появился в МТ адекватно работающий WR, то перешел на него и не жалею пока. Единственная досада, что в МТ5 появился с полгода назад такой глюк. Но МТ4 работу выполняет. Да и МТ5 тоже, если его перезапускать после отработки нужной пачки запросов. А в пачке этих запросов много. Ну может тысяча. Может и больше. С котировками никак не связано. На СМЕ много интересного и без котировок.

при не успешном запросе c СМЕ, который заканчивался ошибкой,  у меня шла команда OnInit()

            else
               {
                  Print("Ошибка при открытии файла. Код =",Fun_Error(GetLastError()));
                  EventKillTimer();
                  OnInit();
               }
 
Renat Akhtyamov #:

В МТ5, при не успешном запросе c СМЕ, который заканчивался ошибкой,  у меня шла команда OnInit()

OnInit() - зачем при неудаче?

Вот такой заголовок проверяю:

string headers=

  "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*'//*;q=0.8,application/signed-exchange;v=b3;q=0.9\n"

  "Accept-Encoding=gzip, deflate, br\n"

  "Accept-Language=ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7\n"

  "Cache-Control=no-cache\n"

  "Pragma=no-cache\n"

  "Sec-Fetch-Dest=document\n"

  "Sec-Fetch-Mode=navigate\n"

  "Sec-Fetch-Site=same-origin\n"

  "Sec-Fetch-User=?1\n"

  "Upgrade-Insecure-Requests=1\n"

  "sec-ch-ua=`\" Not A;Brand`\";v=`\"99`\", `\"Chromium`\";v=`\"101`\", `\"Google Chrome`\";v=`\"101`\"\n"

  "sec-ch-ua-mobile=?0\n"

  "sec-ch-ua-platform=`\"Windows`\"";

Вытащил его с Хрома при обращении к СМЕ.
 

и еще, вот это все время обновлялось, т.к. не в онинит

      string CmeCookie=NULL,headers; 

      char post[],result[]; 

      int res;

      ResetLastError();

      res=WebRequest("GET",CmeUrl,CmeCookie,NULL,TimeOut,post,0,result,headers);

и работало надежно
 
Igor Ramensky #:

У меня нет проблем с выходом из спящего режима, тут это было указано через запятую, что и в этом случае тоже.

Поэтому, дружище, прошу больше не беспокоиться на "спящую" тему. Спасибо за содействие в решении вопроса.

я вообще уже не с вами разговариваю, а обсуждаю с заинтересованными лицами "какие и почему проблемы могут возникать".

вам это неинтересно

 
Igor Ramensky #:

....

Вытащил его с Хрома при обращении к СМЕ.

ааа, норм

 
Renat Akhtyamov #:

ааа, норм

Нет, не норм.

Провёл более тщательное тестирование в течении нескольких дней, заголовки не имеют значения для данной ошибки, там у них что-то серьёзней. 

И вот какой результат:

1. Функция WebRequest в МТ4 работает в штатном режиме всегда и не отваливается через пару часов.

2. Функция WebRequest в МТ5 работает в штатном режиме после запуска и отваливается через пару часов.

3. Функция WebRequest через WinAPI (через системные DLL) в любом МТ работает в штатном режиме всегда и не отваливается никогда

Все проверки были сделаны с URL https://www.cmegroup.com/education/courses.html (эта ссылка просто для примера, просто замечено мною нестабильная работа МТ5 с хостом  www.cmegroup.com, возможно есть и еще подобные).

Так что, слова, дескать, там у них на сайте СМЕ стоит страшный файерволл, который все запросы пользователей отправляет в черную дыру,- просто смех. 

Нормальной тех. поддержки я тут не увидел. Одни только "боты", способные заговаривать проблему, это же проще, чем что-то решать...

Так что, господа, пользуйтесь системным API и ваши проги не загнутся от "развития" МТ после очередного обновления!