Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.07.2020, 06:11
Gribok4321 Gribok4321 вне форума
Прохожий
 
Регистрация: 15.10.2019
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Сохранение веб страницы в XML

Доброго дня. Скажите пожалуйста - как реализовать сохранения веб страницы в xml
https://www.nationalbank.kz/rss/rates_all.xml нужно сохрать данную страницу.
Есть пример веб браузера, сохраняет в HTML
в XML не могу ничего найти
Вложения
Тип файла: zip EasyBrowser.zip (1.15 Мбайт, 1 просмотров)
Ответить с цитированием
  #2  
Старый 28.07.2020, 18:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А что мешает просто считать файл через, нпример, TIdHTTP и сохраить его?
Ответить с цитированием
  #3  
Старый 29.07.2020, 13:42
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Хотел я так ответить автору, но вот такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  sURL = 'https://www.nationalbank.kz/rss/rates_all.xml';
  sFileName = 'd:\test.xml';
var
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  try
    IdHTTP1.Get(sURL, MS);
    MS.SaveToFile(sFileName);
  finally
    MS.Free;
  end;
end;
дает ошибку: Error connecting with SSL. EOF was observed that violates the protocol.
А еще интересно, что с другим URL всё проходит хорошо, а вот с указанным URL автором такая ошибка. Аж самому стало интересно в чем тут дело
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #4  
Старый 31.07.2020, 08:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Дык эта... А где ssl handler?
Я уже приводил пример, который работает на D10.2
Код:
function TMonitorItem.ReadInternetPage(AUrl : String) : String;
var
  IdHTTP : TIdHTTP;
  Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
begin
  IdHTTP := TIdHTTP.Create(Nil);
  Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
  Try
    IdHTTP.Request.BasicAuthentication := False;
    IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';

    Id_HandlerSocket.SSLOptions.Mode := sslmClient;
    Id_HandlerSocket.SSLOptions.Method := sslvSSLv23;
    IdHTTP.IOHandler := Id_HandlerSocket;

    Result := IdHTTP.Get(AUrl);
  Finally
    Id_HandlerSocket.Free;
    IdHTTP.Free;
  End;
end;
Ответить с цитированием
  #5  
Старый 31.07.2020, 13:37
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Цитата:
Сообщение от lmikle
Дык эта... А где ssl handler?
На форме всё было. Пробовал разные опции, но ничего. С Вашим кодом такая же ошибка
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 31.07.2020 в 13:39.
Ответить с цитированием
  #6  
Старый 31.07.2020, 18:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Хм... интересно.
Значит там либо авторизация какая-то нужна, либо крутим разные Mode и Methid в SSL.

А эта, библиотеки-то ssl'ные подложил? Там пару ddl'ек нужно рядом с экзешником "бросить"...
Ответить с цитированием
  #7  
Старый 01.08.2020, 04:08
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Библиотеки подкладывал, но получаю всё ту же ошибку либо "Could not Load SSL Library". А Method и Mode у IdSSLIOHandlerSocketOpenSSL крутил по-разному, но увы...
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #8  
Старый 01.08.2020, 20:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну если ты видишь ошибку "Could not Load SSL Library", то значит не видит оно библиотеки. Или не та версия библиотек. Для Д10.2 и более ранних у меня сейчас используется библиотеки версии 0.9.8. Там начиная с какой-то версии 1.х все поменялось, так что совсем новые библиотеки для этого не подходят. Ну и разрядность библиотек тоже смотри, для 32 бит нужны 32 битные, для 64 - 64. Иначе не взлетит
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter