Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скачать XML, а не обработанный уже HTML? [WinXP]


Cobalt ©   (2010-09-19 13:43:00) 

Использую TIdHTTP для скачивания xml-файла.
Но XML хитрый, с XSL, превращающий его в браузерах в полноценную HTML-страничку.
TIdHTTP возвращает мне именно HTML, а я хочу получить все-таки исходный XML.
Как быть? Что использовать? Как настроить TIdHTTP?
Адрес странички: http://eu.wowarmory.com/guild-info.xml?r=%D0%AF%D1%81%D0%B5%D0%BD%D0%B5%D0%B2%D1%8B%D0%B9+%D0%BB%D0%B5%D1%81&gn=%D0%AE%D0%BD%D0%B8%D1%82%D0%B8


Медвежонок Пятачок   (2010-09-20 17:51:00) [1]

uses MSXML2_TLB;

 CoXMLHTTP = class
   class function Create: IXMLHTTPRequest;
   class function CreateRemote(const MachineName: string): IXMLHTTPRequest;
 end;


Вообще, чтобы получить IXMLHTTPRequest  правильнее было вызывать CoXMLHTTP.Create();

Но можно и так как у меня выше написано.


sniknik   (2010-09-20 17:51:00) [2]

> что это за компонет такой, TXMLHTTP?
это "обертка" ActivX обьекта используемого IE для обратной связи с клиента (Ajax). если бы писал на яваскрипт знал бы.


Cobalt   (2010-09-20 16:23:00) [3]

> Медвежонок Пятачок ©   (20.09.10 10:07) [11]

Можно таки узнать, что это за компонет такой, TXMLHTTP?


Медвежонок Пятачок   (2010-09-20 13:02:00) [4]

А TIdHTTP ты пробовал?

Я его не пробовал только потому что лень настраивать работу через прокси.

PS idHTTP такой же "тупой", как и любой другой транспорт. Никаких трансформаций xml он сам по себе не делает, даже если в документе указана ссылка на xsl


sniknik   (2010-09-20 12:48:00) [5]

> А TIdHTTP ты пробовал?
я пробовал. читай [9], все что там есть получено из него "пошагово".


Cobalt   (2010-09-20 12:38:00) [6]

А TIdHTTP ты пробовал?


Медвежонок Пятачок   (2010-09-20 11:47:00) [7]

какая разница. ни тот ни другой ничего кроме вынимания контента не делает.


Cobalt   (2010-09-20 11:05:00) [8]

А что за компонент TXMLHTTP?
Я использую TIdHTTP (Rev 1.65)


Медвежонок Пятачок   (2010-09-20 10:07:00) [9]

Ну тогда автор нам немножко врет

url := ' http://eu.wowarmory.com/guild-info.xml?r=%D0%AF%D1%81%D0%B5%D0%BD%D0%B5%D0%B2%D1%8B%D0%B9+%D0%BB%D0%B5%D1%81&gn=%D0%AE%D0%BD%D0%B8%D1%82%D0%B8';
with TXMLHTTP.Create(Self) do
 begin
  Open('GET',url);
  Send('');
  while readyState 4 do application.ProcessMessages;
  Buff := responseText;
  with TFileStream.Create('response.txt',fmCreate) do
   try
    WriteBuffer(buff[1],Length(buff));
   finally
    Free;
   end;
 end;

В чистом виде xml без всяких хтмл станиц


sniknik   (2010-09-20 01:42:00) [10]

кстати, как понял это не совсем "веб страничка", скорее "веб приложение", поэтому так и сделано, скачиваются данные, а страничка строится на клиенте в зависимости от параметров разная. и поэтому же постоянно идут ответы от сервера 304 вместо 200 (типа эти данные не менялись), т.е. раз скачал все, а после только заголовками обмен, а данные при видимости разных страниц/динамических/с взаимодействием с пользователем не перезакачиваются, берутся из кеша.
"симпатичное" решение надо сказать, при первом впечатлении как о "громоздком".


sniknik   (2010-09-20 01:32:00) [11]

> трансформация делается на серверной стороне.
нет, получается именно xml, тот самый, что в мазиле в исходном коде. с заголовком и ссылкой на "трансформатор" -
<?xml-stylesheet type="text/xsl" href=" /_layout/guild/roster.xsl"?>
в котором ссылки на следующие
<xsl:import href="/_layout/includes.xsl"/>
<xsl:import href="/_layout/guild/header.xsl"/>
<xsl:output method="html" ...
и т.д. целая куча файлов и скриптов.

и это можно проверить, закачав через TIdHTTP, который само собой не дает трансформированный html, а исходный xml, сначала... чтобы продолжить придется вставлять ссылки.
(почему у автора сразу html хз.)  

> то прежде чем ты увидишь xml
первым, а не прежде чем, качается именно xml.


Медвежонок Пятачок   (2010-09-20 00:53:00) [12]

Если ты откроешь ссылку, и посмотришь исходный код, то увидишь XML (в Мозилле по крайней мере)

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


Cobalt   (2010-09-20 00:51:00) [13]

тогда почему браузер показывает как исходный код именно XML?
И потом, трансформацию делает именно браузер.
XML + XSL с жесткого диска превращает в HTML не жесткий диск, а браузер.


Медвежонок Пятачок   (2010-09-20 00:44:00) [14]

никакого xml для браузера там нет.
трансформация делается на серверной стороне.
если бы там был xml со ссылкой на xls то идшттп стянул бы его аз-из.


Cobalt   (2010-09-19 19:35:00) [15]

Попытка cказать серверу, что мне нужен именно xml
IdHTTPconnect.Request.Accept := 'text/xml';
не удалась :-(


Cobalt   (2010-09-19 18:50:00) [16]

Так же, если ссылку "Сохранить объект как" - вы увидите именно XML
Я же упорно получаю HTML :-(
Может, надо как-то по другому скачивать?


Cobalt   (2010-09-19 18:31:00) [17]

Если ты откроешь ссылку, и посмотришь исходный код, то увидишь XML (в Мозилле по крайней мере)
Вот то, что должно быть по тому адресу:

 
 


А вот что получаю я, из кода
IdHTTPconnect.Get(Address, AStream);
Memo1.Lines.Add(AStream.DataString);

''#$A''#$A''#$A''#$A''#$A'The World of Warcraft Armory - Юнити @ Ясеневый лес - Guild Roster'#$A'


Дмитрий Тимохов   (2010-09-19 18:19:00) [18]

Володь, почему ты думаешь, что браузер превращает его в HTML?
Я думаю, что это на серверной стороне делается.
Тады никак не вытащить.


Palladin   (2010-09-19 17:48:00) [19]


> превращающий его в браузерах

кто сказал? али ты TIdHTTP браузером считаешь? можешь с таким же успехом слезно вопрошать "как вернуть код PHP, а то негодяйский браузер его в полноценный html превращает"....


Наверх

Титульная страница Поиск, карта сайта Написать письмо