Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TNMHttp, Как? 
:(
    Опции темы
Alkash
Дата 6.3.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Здравствуйте уважаемые.
Вот пишу одну процедурку 
Код

Procedure GetNews(Host,ChannelAdress: String;Memo: Tmemo );
var
_xml:TXMLDocument;
I:Integer;
begin
 form1.Downloader.Host:= Host;
 form1.Downloader.Connect;
 try
  form1.Downloader.Get(ChannelAdress);
  if Form1.Downloader.Connected = true then
   begin
//Вот что тут делать - понятия не имею-(
end;

А вопрос в следующем, после того как я получу методом Get страничку, откуда мне взять данные, чтобы её пропарсить?


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Yanis
Дата 6.3.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Что такое Downloader?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
_hunter
Дата 6.3.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Alkash, ну посмотри в справке принимаемые/отдаваемые параметры...

Цитата(Yanis @  6.3.2007,  12:14 Найти цитируемый пост)
Что такое Downloader?

TNMHttp ;)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alkash
Дата 6.3.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Downloader - TNMHTTP, к сожалению я не до конца соображаю, в какую часть компонента у меня данные получаются. Например в Header идёт заголовок, а в body идёт само тело странички? Я работаю с XML, вот поэтому чуток подтупливаю smile 

Это сообщение отредактировал(а) Alkash - 6.3.2007, 12:21


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Yanis
Дата 6.3.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Alkash @  6.3.2007,  13:20 Найти цитируемый пост)
в какую часть компонента у меня данные получаются. 

Может в AResponseContent?
Код
procedure TIdCustomHTTP.Get(AURL: string; const AResponseContent: TStream);



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
_hunter
Дата 6.3.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(Alkash @  6.3.2007,  12:20 Найти цитируемый пост)
к сожалению я не до конца соображаю, в какую часть компонента у меня данные получаются

ну так проснифь запрос...
данные (они же XML) должны быть в Body.

Добавлено @ 12:39 
Yanis, дык это ж для Indy. не факт что в NM та же сигнатура...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Yanis
Дата 6.3.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(_hunter @  6.3.2007,  13:38 Найти цитируемый пост)
Yanis, дык это ж для Indy. не факт что в NM та же сигнатура... 

 smile 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Alkash
Дата 6.3.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Ну дык вот в принципе какая процедурка вышла, только не пыхтит она что-то-(
Код

Procedure GetNews(Host,ChannelAdress: String;Memo: Tmemo );
var
_xml:TXMLDocument;
I:Integer;
begin
 form1.Downloader.Host:= Host;
 form1.Downloader.Connect;
  form1.Downloader.Get(ChannelAdress);
  if Form1.Downloader.Connected = true then
   begin
    _xml:=TXMLDocument.Create(form1);
    _xml.LoadFromFile(form1.Downloader.Body);
    _xml.Active:=true;

Memo.Lines.Add('Èíôîðìàöèÿ î êàíàëå: '+#13#10);
//Âûâîäèì èíôîðìàöèþ
with _xml.DocumentElement.ChildNodes['channel'] do
begin
if not (ChildNodes.FindNode('title')=nil) then
Memo.Lines.Add('Íàçâàíèå: '+ChildNodes.Nodes['title'].NodeValue);

if not (ChildNodes.FindNode('link')=nil) then
Memo.Lines.Add('Àäðåñ:' +ChildNodes.Nodes['link'].NodeValue);

if not (ChildNodes.FindNode('copyright')=nil) then
Memo.Lines.Add('Copyright: '+ChildNodes.Nodes['copyright'].NodeValue)
else
Memo.Lines.Add('Copyright: N/A');

if not (ChildNodes.FindNode('lastBuildDate')=nil) then
Memo.Lines.Add('Äàòà ïîñëåäíåãî îáíîâëåíèÿ: '+ChildNodes['lastBuildDate'].NodeValue+#13#10);

if not (ChildNodes.FindNode('item')=nil) then
begin
for I:=0 to ChildNodes.Count-1 do
if ChildNodes[i].NodeName='item' then
begin
if not (ChildNodes.Nodes[i].ChildNodes['title']=nil) then
Memo.Lines.Add('Òåìà: '+ChildNodes.Nodes[i].ChildNodes['title'].NodeValue);

if not (childNodes.Nodes[i].ChildNodes['link']=nil) then
Memo.Lines.Add('Ññûëêà: '+ChildNodes.Nodes[i].ChildNodes['link'].NodeValue);

if not (ChildNodes.Nodes[i].ChildNodes['decription']=nil) then
Memo.Lines.Add('Òåêñò íîâîñòè: '+ChildNodes.Nodes[i].ChildNodes['description'].NodeValue+#13#10);

if not (childNodes.Nodes[i].ChildNodes['pubDate']=nil) then
Memo.Lines.Add('Äàòà äîáàâëåíèÿ: '+childNodes.Nodes[i].ChildNodes['pubDate'].NodeValue);

//Âîò ÷òî òóò äåëàòü - ïîíÿòèÿ íå èìåþ-(

end;
end;
end;
_xml.Free;
end;

end;

Не хочет коннектиться видимо, во что тут не так........
Вызываю её так:
 
Код

GetNews('http://www.nneformat.ru','http://www.nneformat.ru/rss.xml',form1.Memo1);


Добавлено @ 12:45 
Цитата(Yanis @ 6.3.2007,  12:38)
Цитата(Alkash @  6.3.2007,  13:20 Найти цитируемый пост)
в какую часть компонента у меня данные получаются. 

Может в AResponseContent?
Код
procedure TIdCustomHTTP.Get(AURL: string; const AResponseContent: TStream);

В NMHttp у Get только параметр URL: String.

Это сообщение отредактировал(а) Alkash - 6.3.2007, 12:43


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
_hunter
Дата 6.3.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(Alkash @  6.3.2007,  12:42 Найти цитируемый пост)
 только не пыхтит она что-то

Цитата(Alkash @  6.3.2007,  12:42 Найти цитируемый пост)
Не хочет коннектиться видимо, во что тут не так........

очень информативное описание проблемы...
ну поставь сниффер и посмотри что происходит.

P.S.
а какова причина использования именно этих компонентов?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alkash
Дата 6.3.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Причина - наличие их в 6 дельфях-)Если есть другие предложения то с радостью рассмотрю smile 
Вот, вынес коннект в отдельную функцию: 
Код


Function GetNewsText(Host,Adress: String): String;
 begin
  try
   form1.Downloader.Host:= Host;
   form1.Downloader.Connect;
   form1.Downloader.Get(Host+Adress);
  except
   ShowMessage('oops');
  end;
 result:= form1.Downloader.Body;
 end;

И выдаётся ESocketError - Host lockup failed........Чё я не так делаю? smile 


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
MetalFan
Дата 6.3.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



все нормально работает
InputFileMode = OutputFileMode = false
Код

  NMHTTP.Get('http://ya.ru');
  mem.Lines.Text := NMHTTP.Body;


Цитата(Alkash @  6.3.2007,  14:18 Найти цитируемый пост)
Host lookup failed

ну тебе же написали. не найден хост с таким именем.

Это сообщение отредактировал(а) MetalFan - 6.3.2007, 14:23


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alkash
Дата 6.3.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Тогда почему я браузером свободно на этот хост захожу?
http://www.nneformat.ru/rss.xml
Сюда я попадаю с браузера нормально, а прогой не выходит.

Это сообщение отредактировал(а) Alkash - 6.3.2007, 14:27


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
MetalFan
Дата 6.3.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Alkash, не знаю, у меня мой код(выше приведен) нормально грузит содержание rss.xml (вместо ya.ru поставил твою урл)

Это сообщение отредактировал(а) MetalFan - 6.3.2007, 14:33


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alkash
Дата 6.3.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Да, это у меня косяк был-)А вот ещё трабл - теперь получать то инфу я получаю, а вот 
Код

Function GetNewsText(Adress: String): String;
 begin
   form1.Downloader.Get(Adress);
 result:= form1.Downloader.Body;
 end;
Procedure ParseNews(S: String;Memo1:Tmemo);
var
_xml:TXMLDocument;
I:Integer;
begin
//Ñîçäàåì îáúåêò òèïà TXMLDocument
_xml:=TXMLDocument.Create(form1);
//Çàãðóæàåì â íåãî ôàéë ñ íîâîñòÿìè
_xml.LoadFromFile(S);
//Äåëàåì àêòèâíûì
_xml.Active:=true;

Memo1.Lines.Add('Èíôîðìàöèÿ î êàíàëå: '+#13#10);
//Âûâîäèì èíôîðìàöèþ

Как теперь это body пропарсить? DCOM ошибку выдаёт, хотя код на скачаном файле нормально работает-(


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
_hunter
Дата 6.3.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(Alkash @  6.3.2007,  14:42 Найти цитируемый пост)
DCOM ошибку выдаёт, хотя код на скачаном файле нормально работает

а этот файл точно существует? структура правильная (в IE его открой)?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1341 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.