Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Заполнение HTML форм из Delphi   Найти похожие ветки 

 
twin   (2005-06-08 18:31) [0]

Респект мастерам. Вопрос следующего направления.
Имеется HTML страница с формой загруженная с сайта. К примеру это форма регистрации на форуме. Как мне её заполнить из дельфи и отправить на сервер?

P.S. Вы не подумайте, я не флуд бота пишу )


 
twin   (2005-06-08 19:14) [1]

Как-то я не так выразился.

Мне нужно работать с полями ввода HTML страницы и жать на кнопочки из Delphi.


 
Alexander Panov ©   (2005-06-08 19:58) [2]

twin   (08.06.05 19:14) [1]
Мне нужно работать с полями ввода HTML страницы и жать на кнопочки из Delphi.


1. Где находится страница HTML?
2. На какие кнопочки надо нажимать? Где они?


 
-=S.S=- ©   (2005-06-08 21:15) [3]

Если страница на PHP или CGI то наверное ничего с этого не выйдет (Хотя нет ничего не возмоного). Если на хтмл то посмотри как отправляет запрос сайт. И сделай всё аналогично.


 
twin   (2005-06-08 21:19) [4]

Alexander Panov, видишь эту страницу к примеру? Внизу есть поля ввода и кнопочки. Допустим нужно ввести в эти поля и нажать на эти кнопочки.

S.S, а как самому запрос отправить из Delphi? Вы ребята говорите загадками.


 
-=S.S=- ©   (2005-06-08 21:57) [5]


Clientsocket.Host := "delphimaster.ru";
Clientsocket.Port := "80";
Clientsocket.Open;
While Clientsocket.Connected = False
Application.ProcessMessage;
Clientsocket.socket.sendText("Текст запроса")


Например это текст запроса стартовой страници делфи мастер

GET http://www.delphimaster.ru/i/main.css HTTP/1.0
Accept: */*
Referer: http://delphimaster.net/view/6-1118241099/
Accept-Language: uk
Proxy-Connection: Keep-Alive
If-Modified-Since: Thu, 19 May 2005 06:04:00 GMT
If-None-Match: "42b078-7c9-428c2c50"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: www.delphimaster.ru
Cookie: delphi_name=-%3DS.S%3D-; small_thread=0; delphi_email=kapustin1984@mail.ru; small_thread=0; delphi_name=-%3DS.S%3D-; delphi_email=kapustin1984@mail.ru; id=eemmmcdedezldm; lg=idecelici


 
-=S.S=- ©   (2005-06-08 21:58) [6]

Ой ... сорри не стартовой страници ... а этой ветки.
Но там еще парочка запросов идёт .. на картинки .. и т.д


 
Alexander Panov ©   (2005-06-08 22:24) [7]

twin   (08.06.05 21:19) [4]
Alexander Panov, видишь эту страницу к примеру? Внизу есть поля ввода и кнопочки. Допустим нужно ввести в эти поля и нажать на эти кнопочки.


Я-то вижу допустим в браузере Опера.
А ты в каком?


 
twin   (2005-06-09 03:08) [8]

Alexander Panov, допустим в TWEBBrowser


 
twin   (2005-06-09 03:13) [9]

S.S, гениально.  А как получить ответ сервера после этого самого запроса???


 
twin   (2005-06-09 03:33) [10]

И кстати где нужно смотреть какой запрос выдаёт сама страница?


 
-=S.S=- ©   (2005-06-09 09:09) [11]


> А как получить ответ сервера после этого самого запроса???

Обрабатываешь ClientSocket.OnRead

> И кстати где нужно смотреть какой запрос выдаёт сама страница?

Напиши свой прокси. И смотри всё что душе угодно ;)


 
twin   (2005-06-09 10:07) [12]

S.S - ты что издеваешься? =)
Как ты сам его определил?


 
-=S.S=- ©   (2005-06-09 16:07) [13]

Вообщето для запроса страници хватает и этого запроса :
GET http://www.delphimaster.ru/i/main.css HTTP/1.0


 
twin   (2005-06-09 17:00) [14]

Спасибо мастера! Теперь у меня есть вся необходимая информация. Дальше сам. Разве что S.S посоветует литературу в дополнение?


 
-=S.S=- ©   (2005-06-09 17:20) [15]

DelphiWorld раздел сети. Для начала будет больше чем достаточно.
http://delphiworld.narod.ru/_internet_.html


 
Alexander Panov ©   (2005-06-09 17:22) [16]

-=S.S=- ©   (08.06.05 21:57) [5]

А где здесь нажатие кнопочек?-(


 
twin   (2005-06-09 18:21) [17]

Кнопочки нажимать - это альтернативный выход. Я хотел грузить страницу в бекграунде в TWebBrowser и там уже втихаря обрабатывать страницу. Но слать запросы - более проффессионально )


 
twin   (2005-06-09 20:27) [18]

S.S, ты так и не ответил как запрос перехватил... Если у тебя есть программа какая - вышли на мыло пожалуйста.


 
-=S.S=- ©   (2005-06-09 21:24) [19]

Тебе исходники ? Или прогу ?
Но сразу предупреждаю что она не дописана .. но запросы перехватить можно.
Для этого запускаешь ту прогу и настраюешь свой браузер на прокси сервер
Порт=9090 и компьютер=Localhost (если будешь запускать у себя).


 
twin   (2005-06-09 21:42) [20]

Исходники. Прогу скомпелю уже сам я думаю. )
Заодно и разберусь как происходит перехват.


 
twin   (2005-06-09 21:43) [21]

Кстати ты там никаких посторонних компонентов не использовал?


 
-=S.S=- ©   (2005-06-09 22:07) [22]

Тебе исходники или сам ехе ? ;)
Но спазу оговорюсь что прога вообще не дописана .. но для перехвата запросов сгодиться.
для этого нужно свой броузер настроить на прокси с портом 9090 и компьютером localhost.
ну и не забудь ту прогу запустить :)


 
-=S.S=- ©   (2005-06-09 22:10) [23]

Сорри за флуд ... инета небыло .. думал что не запостил :)

> twin   (09.06.05 21:42) [20]

Лови. Использовал только ServerSocket и  ClientSocket.


 
twin   (2005-06-09 22:41) [24]

Спасибо!


 
бывший   (2005-06-09 22:52) [25]

можно тоже глянуть? starsoftware@rambler.ru


 
twin   (2005-06-09 22:56) [26]

Отлично. Уже собрал все нужные запросы! Еще раз спасибо!


 
twin   (2005-06-09 23:28) [27]

Блин вопросы никогда не закончаться. А как запрос передать дальше через программу и по назначению к серверу чтобы потом получить и зафиксировать его ответ? Кода не требую - просто наведи на мысль. Походу уже только сокетами не обойтись?


 
twin   (2005-06-09 23:34) [28]

И кстати какой порт нужно слушать чтобы получить ответ сервера?


 
-=S.S=- ©   (2005-06-10 02:12) [29]


> twin   (09.06.05 23:34) [28]
> И кстати какой порт нужно слушать чтобы получить ответ сервера?

От какого сервера ? Если ответ от прокси к браузеру то нужно слушать порт 9090 а если от страници к прокси то 80

> бывший   (09.06.05 22:52) [25]

Лови

> twin   (09.06.05 23:28) [27]

Если хочешь то передавай дальше ... используй ClientSocket посылай запрос и жди ответ.


 
dDan   (2005-06-10 06:47) [30]

S.S если не жалко можешь еще разок дублировать на
ddan2002@mail.ru


 
twin   (2005-06-10 07:52) [31]

Не... смотри:

Отправка запроса
Clientsocket1.Host := Edit1.Text;
Clientsocket1.Port := strtoint(Edit2.Text);
Clientsocket1.Open;
Clientsocket1.socket.sendText(Memo3.Text);

Это ClientOnRead
 Temp := Socket.ReceiveText;
 Socket1.SendText(Temp);
 Memo2.Lines.Add("****************************************************");
 Memo2.Lines.Add(Temp);
 Memo2.Lines.Add("****************************************************");

Шлю запрос - обратно ничего не приходит.
P.S. В ДНК ошибки нет - я проверял ).


 
Digitman ©   (2005-06-10 08:25) [32]


> twin   (10.06.05 07:52) [31]


гнездо у тебя работает в неблокирующем режиме

это значит, что

Clientsocket1.Open; //нельзя полагаться на успешное установление соединения сразу после завершения выполнения метода Open

Clientsocket1.socket.sendText(Memo3.Text); //если на момент вызова этого метода св-во Active = False, то ты послал свое сообщение на деревню дедушке


 
twin   (2005-06-10 08:58) [33]

Active то как раз True.

А что делать с Open?


 
-=S.S=- ©   (2005-06-10 09:17) [34]


> Clientsocket1.Open;
> Clientsocket1.socket.sendText(Memo3.Text);

Смотри пост 5


 
twin   (2005-06-10 09:30) [35]

While Clientsocket.Connected = False
Application.ProcessMessage;

Нет такого свойства Connected


 
-=S.S=- ©   (2005-06-10 09:33) [36]


> Нет такого свойства Connected

Ну пропустил сорри. Но можно было и самому ддогадаться
ClientSocket.Socket.Connected


 
twin   (2005-06-10 12:01) [37]

Действительно, можно было...

Послал простой запрос на главную страницу...
Все равно ничего не пришло.


 
twin   (2005-06-10 12:39) [38]

Вот еще какая интересная ошибка.
Когда шлю текст на несуществующий сайт. Получаю соответственно No Such Host.
Если шлю на название с http:// то получаю The requested name is valid and was found in database, but id doesnt have the correct associated data being resolved for (1004), on API "Async Lookup"

Если шлю без http:// - то вообще ничего не происходит. Ничего не приходит и ничего как я понял не уходит т.к. я слал запрос на форум для создания поста, но тщетною.


 
-=S.S=- ©   (2005-06-10 13:20) [39]

Что у тебя в Memo3.Text ?
Для надёжности попробуй отослать запрос в Clientsocket1OnConnect
А хост нужно задавать в виде delphimaster.ru (без http:// и  www)


 
twin   (2005-06-10 14:13) [40]

Это в Memo3.Text

GET http://www.delphimaster.ru/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */*
Accept-Language: ru
Cookie: small_thread=0; delphi_name=twin; delphi_email=antygrav@list.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)
Host: www.delphimaster.ru
Proxy-Connection: Keep-Alive

Задал хост как сказал... Такая же фигня. Ничего не возвращается - хоть вешайся.


 
twin   (2005-06-10 14:19) [41]

Передал через OnConnect...


 
Digitman ©   (2005-06-10 14:25) [42]

а где у тебя терминирующий CRLF ?


 
twin   (2005-06-10 14:41) [43]

Ну дык как запрос отправила страница, так я его и вставил в Memo. Никаких CRLF там не было.


 
Digitman ©   (2005-06-10 15:00) [44]


> twin   (10.06.05 14:41) [43]


> как запрос отправила страница


не страница, наверно, а браузер.

браузер же отправил запрос к прокси, а не непосредственно http-серверу

http://www.i2r.ru/static/247/out_3771.shtml


 
-=S.S=- ©   (2005-06-10 15:22) [45]


> Digitman ©   (10.06.05 15:00) [44]

неплохая книжонка !!! Спасибо!


 
twin   (2005-06-10 16:59) [46]

Вах, воистину.


 
twin   (2005-06-10 19:53) [47]

>браузер же отправил запрос к прокси, а не непосредственно http-серверу

А что они различаются? Браузер работающий через прокси шлет все как обычно т.к. прокси потом пересылать полученное на сервер.


 
Alexander Panov ©   (2005-06-10 21:35) [48]

twin   (10.06.05 19:53) [47]
Браузер работающий через прокси шлет все как обычно


Ошибаешься.


 
Eraser ©   (2005-06-10 22:28) [49]

twin   (10.06.05 19:53) [47]

Можно сделать, чтобы программа не "знала", что она работает через прокси, это можно сделать при помощи соксификации, от названия протокола SOCKS.


 
twin   (2005-06-11 16:06) [50]

Угу ясно. Как? =)


 
twin   (2005-06-12 18:56) [51]

Понятно... Так и поступлю...


 
TBender ©   (2005-06-25 22:17) [52]

to -=S.S=- ©
Если не трудно выщли и мне исходники плз. А то я уже замучался.


 
-=S.S=- ©   (2005-06-30 11:13) [53]

Выслал


 
TBender ©   (2005-06-30 22:51) [54]

Спасибо большое.



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

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.04 c
2-1127480780
Mozart_mcs
2005-09-23 17:06
2005.10.23
Опять траблы с текстом


1-1128148095
heady
2005-10-01 10:28
2005.10.23
Скачать HTML-код странички в Memo


1-1128069311
IfBeginThenEnd
2005-09-30 12:35
2005.10.23
Класс контейнера


14-1126765043
by
2005-09-15 10:17
2005.10.23
DOA vs. ODAC. Програмирующие Oracle + Delphi (Builder) ваш выбор?


1-1127987845
Иванов__
2005-09-29 13:57
2005.10.23
Как запихать прогу в DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский