Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2018.02.04;
Скачать: [xml.tar.bz2];

Вниз

Как скачать XML, а не обработанный уже HTML?   Найти похожие ветки 

 
Cobalt ©   (2010-09-19 13:43) [0]

Использую 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


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


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

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


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

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


 
Cobalt ©   (2010-09-19 18:31) [3]

Если ты откроешь ссылку, и посмотришь исходный код, то увидишь XML (в Мозилле по крайней мере)
Вот то, что должно быть по тому адресу:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/_layout/guild/roster.xsl"?><page globalSearch="1" lang="ru_ru" requestUrl="/guild-info.xml">
 <tabInfo subTab="guildRoster" tab="guild" tabGroup="guild" tabUrl="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"/>
 <guildInfo>


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

"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">"#$A"<html>"#$A"<head>"#$A"<link href="/favicon.ico" rel="shortcut icon">"#$A"<link href="/_content/en_us/searchplugin.xml" rel="search" title="The World of Warcraft Armory" type="application/opensearchdescription+xml">"#$A"<title>The World of Warcraft Armory - Юнити @ Ясеневый лес - Guild Roster</title>"#$A"<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">


 
Cobalt ©   (2010-09-19 18:50) [4]

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


 
Cobalt ©   (2010-09-19 19:35) [5]

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


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

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


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

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


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

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

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


 
sniknik ©   (2010-09-20 01:32) [9]

> трансформация делается на серверной стороне.
нет, получается именно 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.


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

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


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

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

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 без всяких хтмл станиц


 
Cobalt ©   (2010-09-20 11:05) [12]

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


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

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


 
Cobalt ©   (2010-09-20 12:38) [14]

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


 
sniknik ©   (2010-09-20 12:48) [15]

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


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

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

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

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


 
Cobalt ©   (2010-09-20 16:23) [17]

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

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


 
sniknik ©   (2010-09-20 17:51) [18]

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


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

uses MSXML2_TLB;

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


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

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2018.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1454909399
Signal
2016-02-08 08:29
2018.02.04
Сети..Сети..и выбор интерфейса в TServerCocket


2-1455227853
Dmk
2016-02-12 00:57
2018.02.04
Округление


2-1455133154
aturasama
2016-02-10 22:39
2018.02.04
сокеты


2-1455547592
Незарегистрированный
2016-02-15 17:46
2018.02.04
Как корректно сравнить/присвоить Longint с Сишными TRUE и FALSE?


6-1284889393
Cobalt
2010-09-19 13:43
2018.02.04
Как скачать XML, а не обработанный уже HTML?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский