Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Сетевое программирование > InternetOpenUrl работает с HTTP, но не работает с HTTPS |
Автор: Nik36 28.11.18, 14:07 |
Код функции прекрасно работает если ему подсунуть http-ссылку <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> DownloadFile('http://host.test/1.zip', 'C:\1.zip'); Однако если использовать https-ссылку: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> DownloadFile('https://host.test/1.zip', 'C:\1.zip'); то в третьей строчке функции UrlHandle получает значение nil. В описании к InternetOpenUrl говорится что она работает с https. GetLastError даёт ошибку 12157 (The application experienced an internal error loading the SSL libraries.). Какого-то параметра не хватает или чего более? В браузере, разумеется работают обе ссылки на файл. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> function tFormUpdate.DownloadFile(const Url: string; const FileName : string): Boolean; var NetHandle: HINTERNET; UrlHandle: HINTERNET; Buffer: array[0..1024] of char; BytesRead: cardinal; f : File; begin NetHandle := InternetOpen(PChar(ExtractFileName(Application.ExeName)), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(NetHandle) then begin UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD , 0); if Assigned(UrlHandle) then begin AssignFile(f, FileName); Rewrite(F, 1); FillChar(Buffer, SizeOf(Buffer), 0); repeat FillChar(Buffer, SizeOf(Buffer), 0); InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead); pbUpload.Position := pbUpload.Position + Integer(BytesRead); Application.ProcessMessages; BlockWrite(f, Buffer, BytesRead); until BytesRead = 0; InternetCloseHandle(UrlHandle); CloseFile(F); REsult := true; end else begin Result := false; end; InternetCloseHandle(NetHandle); end else result := false; end; |
Автор: ^D^ima 29.11.18, 08:23 |
попробуй libeay32.dll положить в папку с файлом |
Автор: Nik36 29.11.18, 09:00 |
Спасибо, но лежит такой файл. Через TIdHTTP с сайтом нормально обмен идет информацией, видимо придётся на него переделывать и загрузку файлов. Оказалось что сервер не настроен на работу с Windows XP + IE8. https://www.ssllabs.com/ssltest/analyze.html показал только для этой пары: Server sent fatal alert: handshake_failure, с остальными браузерами и системами всё в порядке. Открыл IE8 (наверное впервые за 15 лет) и в нём действительно сайт и файлы с него не грузятся. |
Автор: Fr0sT 30.11.18, 07:47 |
Дык. После хартблидов все начали версии ssl наращивать и старые убирать. Учитывая повсеместный переход на https, скоро без сторонних программ с XP вообще никуда не выйдешь |