Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.200.66] |
|
Сообщ.
#1
,
|
|
|
Меня интересует вопрос как можно программно заполнить форму и содержымое отослать? какие нужны компоненты? и как это примерно делается?
|
Сообщ.
#2
,
|
|
|
Цитата cha0s @ Меня интересует вопрос как можно программно заполнить форму и содержымое отослать? Для начала нужно выясниить для себя, что это означает - "заполнить форму и отослать". Для этого можно почитать материал здесь, например - http://postroika.ru/html/47step2.html Цитата cha0s @ какие нужны компоненты? Для отправки данных(запроса) на сервер можно воспользоваться любыми компонентами, основанными на сокетах. Проще всего - компонент IdHTTP из комплекта Indy, инкапсулирующего работу по протоколу HTTP. Цитата cha0s @ и как это примерно делается? IdHttp1.Get(<Адрес URL>), например |
Сообщ.
#3
,
|
|
|
не много разобрался, а как будет выгледить запрос если на форме метод post? есль проги которые показывают все запросы в сыром виде?
|
Сообщ.
#4
,
|
|
|
Рассмотрим метод GET:
<form method=GET action=http://localhost/cgi-bin/mget?> <input type=text name=name1 value="имя" size="40" maxlength="20"><br> <input type=text name=name2 value="фамилия" size="40" maxlength="20"><br> <input type=submit> </form> Если нам нужно отправить значения Vasya Pupkin, то в этом случае запрос будет выглядеть так: var s: String; begin s := IdHTTP1.Get('http://localhost/cgi-bin/mget?name1=Vasya&name2=Pupkin') Для метода POST: <form method=POST action=http://localhost/cgi-bin/mget?> <input type=text name=name1 value="имя" size="40" maxlength="20"><br> <input type=text name=name2 value="фамилия" size="40" maxlength="20"><br> <input type=submit> </form> var tL: TStringList; s: String; begin tL := TStringList.Create; tL.Add('name1=Vasya'); tL.Add('name2=Pupkin'); try s := IdHTTP1.Post('http://localhost/cgi-bin/mget',tL); finally tL.Free; end; |
Сообщ.
#5
,
|
|
|
Спасибо с этим разобрался но появилась новая проблема при отсылке запроса серверу выскакивает исключение 'HTTP/1.0 302 Moved Temporarily' как с этим быть?
|
Сообщ.
#6
,
|
|
|
Вот направление:
idHTTP просмотреть HTML код :-((( http://www.delphimaster.ru/cgi-bin/forum.pl?id=1133169129&n=4 |
Сообщ.
#7
,
|
|
|
Демо спасибо разобрался
|
Сообщ.
#8
,
|
|
|
Предлагаю добавить статью в FAQ:
Вопрос: Как заполнить форму и отправить на сервер? Для того, чтобы отправить форму на сервер, необходимо: 1. Найти форму в исходном тексте страницы. Для этога найти в исходном тексте страницы теги <form>...</form> Например: <form method=GET action=http://localhost/cgi-bin/mget?> <input type=text name=name1 value="имя" size="40" maxlength="20"><br> <input type=text name=name2 value="фамилия" size="40" maxlength="20"><br> <input type=submit> </form> 2. Определить метод, который используется для отправки данных. В указанном выше примере это "GET" - form method=GET 3. Найти поля, которые необходимо заполнить. В примере это: <input type=text name=name1 value="имя" size="40" maxlength="20"><br> <input type=text name=name2 value="фамилия" size="40" maxlength="20"><br> 4. Используя компоненты для работы с протоколом TCP/IP, сформировать строку запроса. Для определенности пусть это будет компонент TIdHTTP из пакета Indy, входящий в стандартный набор компонент Delphi. -------------- Сформируем строку для отправки на сервер для нашего примера: Пусть нам нужно отправить значениядля полей: имя=Vasya, фамилия=Pupkin. В этом случае запрос будет выглядеть так: var s: String; begin s := IdHTTP1.Get('http://localhost/cgi-bin/mget?name1=Vasya&name2=Pupkin') -------------- В случае, если форма использует метод POST: <form method=POST action=http://localhost/cgi-bin/mget?> <input type=text name=name1 value="имя" size="40" maxlength="20"><br> <input type=text name=name2 value="фамилия" size="40" maxlength="20"><br> <input type=submit> </form> формируем запрос для отправки несколько по-другому: var tL: TStringList; s: String; begin tL := TStringList.Create; tL.Add('name1=Vasya'); tL.Add('name2=Pupkin'); try s := IdHTTP1.Post('http://localhost/cgi-bin/mget',tL); finally tL.Free; end; ------------------ Ключевые слова: TIdHTTP, GET, POST |