Проблемы с подключением по WebRequest после перехода на https

 

Добрый день. Сайт коммиссии по регулированию фьючерсных рыноков cftc.gov недавно переехал на https протокол. После этого пыпытки связаться с ним через штатную функцию WebRequest завершаются неудачей: возвращается ошибка 5203 (Ошибка в результате выполнения HTTP запроса).

Примечательно, что соединение с тем же  https://www.google.com/finance из примера к WebRequest происходит нормально и все данные получаю нормально. Но если изменить адрес на cftc.gov то связи нет. Пример взял из документации:

void OnStart() 
  { 
   string cookie=NULL,headers=NULL; 
   char post[],result[]; 
   int res; 
//--- для работы с сервером необходимо добавить URL "https://www.google.com/finance"  
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): 
   //string cftc_url="https://www.google.com/finance"; 
   string cftc_url="https://www.cftc.gov"; 
//--- обнуляем код последней ошибки 
   ResetLastError(); 
//--- загрузка html-страницы с Google Finance 
   int timeout=5000; //--- timeout менее 1000 (1 сек.) недостаточен при низкой скорости Интернета 
   res=WebRequest("GET",cftc_url,cookie,NULL,timeout,post,0,result,headers); 
//--- проверка ошибок 
   if(res==-1) 
     { 
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError()); 
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления 
      MessageBox("Код ошибки WebRequest: " + (string)GetLastError(),"Ошибка",MB_ICONINFORMATION); 
     } 
   else 
     { 
      //--- успешная загрузка 
      PrintFormat("Файл успешно загружен, Размер файла =%d байт.",ArraySize(result)); 
      //--- сохраняем данные в файл 
      int filehandle=FileOpen("cash.html",FILE_WRITE|FILE_BIN); 
      //--- проверка ошибки 
      if(filehandle!=INVALID_HANDLE) 
        { 
         //--- сохраняем содержимое массива result[] в файл 
         FileWriteArray(filehandle,result,0,ArraySize(result)); 
         //--- закрываем файл 
         FileClose(filehandle); 
        } 
      else Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); 
     } 
  }
Не понятно как решить проблему с подключением.
 
Vasiliy Sokolov:

Добрый день. Сайт коммиссии по регулированию фьючерсных рыноков cftc.gov недавно переехал на https протокол. После этого пыпытки связаться с ним через штатную функцию WebRequest завершаются неудачей: возвращается ошибка 5203 (Ошибка в результате выполнения HTTP запроса).

Примечательно, что соединение с тем же  https://www.google.com/finance из примера к WebRequest происходит нормально и все данные получаю нормально. Но если изменить адрес на cftc.gov то связи нет. Пример взял из документации:

Не понятно как решить проблему с подключением.

Возможно всё дело в Вашем IP (заблокировали за спам)? У меня всё корректно отработало после добавления url "https://www.cftc.gov" в разрешенные

2018.03.26 12:38:47.873 Test_en (RTS-6.18,M1)   Файл успешно загружен, Размер файла =37052 байт.
 
Vladimir Karputov:

Возможно всё дело в Вашем IP (заблокировали за спам)? У меня всё корректно отработало после добавления url "https://www.cftc.gov" в разрешенные

Дело в том, что эта проблема вылезает также у пользователей моего продукта. Так что не думаю что дело именно в спаме.

Но раз у Вас есть доступ, это обнадеживает. Скажите, код для теста использовали тот же что я приложил?

 
Vasiliy Sokolov:

Дело в том, что эта проблема вылезает также у пользователей моего продукта. Так что не думаю что дело именно в спаме.

Но раз у Вас есть доступ, это обнадеживает. Скажите, код для теста использовали тот же что я приложил?

Да. Вставил в скрипт полностью.

void OnStart() 
  { 
   string cookie=NULL,headers=NULL; 
   char post[],result[]; 
   int res; 
//--- для работы с сервером необходимо добавить URL "https://www.google.com/finance"  
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): 
   //string cftc_url="https://www.google.com/finance"; 
   string cftc_url="https://www.cftc.gov"; 
//--- обнуляем код последней ошибки 
   ResetLastError(); 
//--- загрузка html-страницы с Google Finance 
   int timeout=5000; //--- timeout менее 1000 (1 сек.) недостаточен при низкой скорости Интернета 
   res=WebRequest("GET",cftc_url,cookie,NULL,timeout,post,0,result,headers); 
//--- проверка ошибок 
   if(res==-1) 
     { 
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError()); 
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления 
      MessageBox("Код ошибки WebRequest: " + (string)GetLastError(),"Ошибка",MB_ICONINFORMATION); 
     } 
   else 
     { 
      //--- успешная загрузка 
      PrintFormat("Файл успешно загружен, Размер файла =%d байт.",ArraySize(result)); 
      //--- сохраняем данные в файл 
      int filehandle=FileOpen("cash.html",FILE_WRITE|FILE_BIN); 
      //--- проверка ошибки 
      if(filehandle!=INVALID_HANDLE) 
        { 
         //--- сохраняем содержимое массива result[] в файл 
         FileWriteArray(filehandle,result,0,ArraySize(result)); 
         //--- закрываем файл 
         FileClose(filehandle); 
        } 
      else Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); 
     } 
  }

Вот, запустил второй раз и результат (файл создаётся, я проверил)

2018.03.26 13:21:55.851 Test_en (RTS-6.18,M1)   Файл успешно загружен, Размер файла =37052 байт.
Файлы:
Test_en.mq5  4 kb
 

Вот только что еще один пользователь постучался с этой же проблемой. Просьба у кого не Windows 10 протестировать соединение с этим сайтом через WebRequest.

Также если кто-то что то знает про особенности WebRequest  - написать здесь. Любая информация будет полезной. Спасибо.

 

win10 все ок.

при 5203 дополнительная информация об ошибке может быть в респонсе (result)

 
Комбинатор:

win10 все ок.

при 5203 дополнительная информация об ошибке может быть в респонсе (result)

Спасибо за новодку. В result пришло:

2018.03.26 15:04:27.479 CftcWebRequestTest EURUSD,Daily: Result: send request failed [12030]

Первый же поиск по этой ошибке приводит сюда:

The error 12030 means "The connection with the server has been reset or terminated, or an incompatible SSL protocol was encountered. For example, WinHTTP version 5.1 does not support SSL2 unless the client specifically enables it."

Тем не менее все равно не понятно что происходит?
Call to HttpSendRequestSync failed for port 80 with 12030 error code.- SMP server in SCCM 2012 Environment
  • social.technet.microsoft.com
Вопрос I am having below issue in State Migration point server. Can you pls assist with this issue Call to HttpSendRequestSync failed for port 80 with 12030 error code. Ответы Have you checked the IIS logs as Torsten said? The error 12030 means "The connection with the server...
 
На какой операционке это поисходит?
 
Vasiliy Sokolov:

Просьба у кого не Windows 10 протестировать соединение с этим сайтом через WebRequest.

Windows 7 / 32 bit. Проверил на МТ4 и МТ5.

МТ4.  https://www.google.com/finance

2018.03.26 17:38:15.290 Test CFTC EURUSD,M30: Файл успешно загружен, Размер файла =53212 байт.

МТ4. https://www.cftc.gov

2018.03.26 17:39:47.431 Test CFTC EURUSD,M30: Ошибка в WebRequest. Код ошибки  =5203

МТ5.  https://www.google.com/finance

2018.03.26 17:35:06.291 Test CFTC (EURUSD,H1)   Файл успешно загружен, Размер файла =53241 байт.

МТ5. https://www.cftc.gov

2018.03.26 17:37:01.547 Test CFTC (EURUSD,H1)   Ошибка в WebRequest. Код ошибки  =5203
 

Просьба у кого не Windows 10 протестировать соединение с этим сайтом через WebRequest.

Windows 7 / 64 bit. Проверил на  МТ5. тоже Ошибка в WebRequest. Код ошибки  =5203

 
MetaQuotes Software Corp.:
На какой операционке это поисходит?

Windows 7. Возможно дело в отсутствии каких-то обновлений протокола ssl на которые закладывается стандарт?

Хотя нет. Браузеры с этим сайтом работают нормально. Т.е. выходит причина именно внутри WebRequest.

Причина обращения: