Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка 10054 при загрузке JSON через TIdHTTP в Delphi: причины и решения проблемы

Delphi , Интернет и Сети , Компоненты и Интернет

 

Ошибка с кодом 10054 указывает на то, что TCP-соединение было принудительно прервано на стороне удаленного сервера. Это может происходить по множеству причин, включая проблемы с сетевой инфраструктурой, настройками безопасности или некорректное использование компонентов для работы с сетью.

Проблема и контекст

Разработчик столкнулся с ошибкой 10054 при попытке загрузить JSON через TIdHTTP в Delphi. Соединение работает корректно в браузере, что указывает на отсутствие проблем с URL и сервером. В контексте вопроса упоминается, что использование THTTPClient может быть проще, если нет других зависимостей Indy.

Решение, предложенное в контексте

Ответ от Remy Lebeau указывает на необходимость использования компонента TIdSSLIOHandlerSocketBase-совместимого для свойства IOHandler TIdHTTP, так как загрузка происходит по зашифрованному HTTPS-URL. Если используется актуальная версия Indy, TIdHTTP автоматически создаст TIdSSLIOHandlerSocketOpenSSL при необходимости, но на нем будет включена только TLS 1.0. Если требуется TLS 1.1+ или другая настройка, необходимо создать TIdSSLIOHandlerSocketOpenSSL самостоятельно и настроить его.

Альтернативное решение

Для решения проблемы можно также проверить следующие шаги:

  1. Убедитесь, что все зависимости Indy обновлены до последней версии.
  2. Проверьте настройки брандмауэра или сетевого экрана, которые могут блокировать загрузку.
  3. Проверьте сетевые настройки компьютера на предмет ограничений или неправильной конфигурации.
  4. Попробуйте выполнить ту же операцию, используя THTTPClient, как было предложено в комментарии.

Пример кода на Object Pascal (Delphi)

program GetJSONData;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  IdGlobal,
  IdHTTP,
  IdSSLOpenSSL; // Добавьте эту директиву, если она еще не добавлена

var
  IdHTTP1: TIdHTTP;
  JSON: string;
begin
  IdHTTP1 := TIdHTTP.Create(nil);
  try
    // Назначьте SSL-обработчик, если он еще не назначен
    if IdHTTP1.IOHandler is nil then
      IdHTTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

    JSON := IdHTTP1.Get('https://login.microsoftonline.com/common/.well-known/openid-configuration');
    // Обработка полученных данных
  finally
    IdHTTP1.Free;
  end;
end.

Заключение

При работе с TIdHTTP в Delphi для загрузки данных по HTTPS важно убедиться, что используется SSL-обработчик. В случае возникновения ошибки 10054, следует проверить версию Indy, настройки безопасности и сетевую инфраструктуру. Приведенный пример кода демонстрирует, как настроить TIdHTTP для работы с HTTPS, используя TIdSSLIOHandlerSocketOpenSSL.

Создано по материалам из источника по ссылке.

Разработчик столкнулся с ошибкой 10054 при попытке установить TCP-соединение для загрузки JSON через компонент TIdHTTP в Delphi, из-за чего возможны проблемы с зашифрованным соединением, и для их решения может потребоваться использование SSL-обработчика.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компоненты и Интернет ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-22 11:33:54/0.0038049221038818/0